예제 #1
0
def create_session(opts):
    ''' Given a collection of options, attempt to recreate the
    pyacd session.

    :param opts: The authentication options
    :returns: An authenticated session
    '''
    session = None
    # attempt to load a previous session
    if opts.session:
        try:
            logger.debug("loading session from(%s)", opts.sesssion)
            session = pyacd.Session.load_from_file(opts.session)
        except: session = pyacd.Session()

    # attempt to login with the supplied session information
    try:
        if opts.email and opts.password and session:
            logger.debug("creating session with email(%s)", opts.email)
            session = pyacd.login(opts.email, opts.password, session=session)
        elif opts.email and opts.password:
            logger.debug("creating session with email(%s)", opts.email)
            session = pyacd.login(opts.email, opts.password)
        else:
            logger.debug("creating session with session(%s)", opts.session)
            session = pyacd.login(session=session)
    except Exception, ex:
        logger.exception("error creating user session")
        session = None
예제 #2
0
 def testLogin(self):
   global session
   session=pyacd.login(email,password)
   self.assertTrue(session.is_valid(),"invalid session %s"%session)
   self.assertTrue(session.is_logined(),"not logined %s"%session)
   self.assertNotEqual(session.username,None,"username is None %s"%session)
   self.assertNotEqual(session.customer_id,None,"customer_id is None %s"%session)
예제 #3
0
 def test_1_LoginWithEmailAndPassword(self):
   session=pyacd.login(email,password)
   self.assertTrue(session.is_logged_in(),"not logined %s"%session)
   self.assertNotEqual(session.username,None,"username is None %s"%session)
   self.assertNotEqual(session.customer_id,None,"customer_id is None %s"%session)
   session.__str__()
   session.__repr__()
   session.save_to_file(acdsession)
예제 #4
0
 def testLogin(self):
     global session
     session = pyacd.login(email, password)
     self.assertTrue(session.is_logged_in(), "not logined %s" % session)
     self.assertNotEqual(session.username, None,
                         "username is None %s" % session)
     self.assertNotEqual(session.customer_id, None,
                         "customer_id is None %s" % session)
예제 #5
0
 def test_2_LoginWithAcdSession(self):
   session = pyacd.Session.load_from_file(acdsession)
   session.__str__()
   session.__repr__()
   session = pyacd.login(session=session)
   self.assertTrue(session.is_logged_in(),"not logined %s"%session)
   self.assertNotEqual(session.username,None,"username is None %s"%session)
   self.assertNotEqual(session.customer_id,None,"customer_id is None %s"%session)
   session.__str__()
   session.__repr__()
   session.save_to_file(acdsession)
예제 #6
0
def main():
    opts, args = parser.parse_args(sys.argv[1:])
    pyacd.set_amazon_domain(opts.domain)

    for m in ["email", "session"]:
        if not opts.__dict__[m]:
            print >>sys.stderr, "mandatory option is missing (%s)\n" % m
            parser.print_help()
            exit(2)

    if not opts.password:
        opts.password = getpass.getpass()

    if os.path.isdir(opts.session):
        print >>sys.stderr, "%s should not be directory." % s
        exit(2)

    if opts.verbose:
        print >>sys.stderr, "Loading previous session...",
    try:
        s = pyacd.Session.load_from_file(opts.session)
        if opts.verbose:
            print >>sys.stderr, "Done."
    except:
        s = pyacd.Session()
        if opts.verbose:
            print >>sys.stderr, "Failed."

    if opts.verbose:
        print >>sys.stderr, "Logging into %s..." % opts.domain,
    try:
        session = pyacd.login(opts.email, opts.password, session=s)
        if opts.verbose:
            print >>sys.stderr, "Done."

        if opts.verbose:
            print >>sys.stderr, "Updating current session...",

        session.save_to_file(opts.session)
        if opts.verbose:
            print >>sys.stderr, "Done."

    except:
        if opts.verbose:
            print >>sys.stderr, "Failed."
예제 #7
0
 def test_3_LoginWithNoneEmail(self):
   try:
     session=pyacd.login(None,password)
   except TypeError,e:
     pass
예제 #8
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])
  pyacd.set_amazon_domain(opts.domain)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("No path selected.\n")
    parser.print_help()
    sys.exit(2)
  else:
    pass


  # Check options of authentication
  if opts.email:
    if not opts.password:
      opts.password = getpass.getpass()

  if (opts.email and opts.password) or opts.session:
    pass # OK case
  else:
    print >>sys.stderr, "Either email and password or session is mondatory."
    sys.exit(2)

  session = None; s = None
  if opts.session:
    if opts.verbose:
      print >>sys.stderr, "Loading previous session...",
    try:
      s=pyacd.Session.load_from_file(opts.session)
      if opts.verbose:
        print >>sys.stderr, "Done."
    except:
      s=pyacd.Session()
      if opts.verbose:
        print >>sys.stderr, "Failed."

  if opts.verbose:
    print >>sys.stderr, "Logging into %s..."%opts.domain,
  try:
    if opts.email and opts.password and s:
      session=pyacd.login(opts.email,opts.password,session=s)
    elif opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      session=pyacd.login(session=s)
    if opts.verbose:
      print >>sys.stderr, "Done."
  except:
    if opts.verbose:
      print >>sys.stderr, "Failed."
      sys.exit(2)

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_logged_in():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)


  for path in args:
    if path[0]!='/':path='/'+path

    if opts.verbose:
      sys.stderr.write("Moving %s to Recycle ... "%(path))

    # get path
    try:
      pathobj = pyacd.api.get_info_by_path(path)
    except pyacd.PyAmazonCloudDriveApiException,e:
      sys.stderr.write("Aborted. ('%s')\n"%e.message)
      continue
    except pyacd.PyAmazonCloudDriveError,e:
      sys.stderr.write("Not found.\n")
      continue
예제 #9
0
def main():
    opts, args = parser.parse_args(sys.argv[1:])

    # Check options of authentication
    if opts.session and os.path.exists(
            opts.session) and not os.path.isdir(opts.session):
        pass
    elif not opts.email or not opts.password:
        sys.stderr.write("!! email and password are required !!\n")
        parser.print_help()
        sys.exit(2)

    args = list(set(args))
    if "-" in args:
        args.remove("-")
        args += [x.strip() for x in sys.stdin.readlines()]

    if 0 == len(args):
        sys.stderr.write("!! no path selected !!\n")
        parser.print_help()
        sys.exit(2)
    else:
        pass

    # Login to Amazon.com
    session = None
    try:
        if not opts.quiet:
            sys.stderr.write("Logining to Amazon.com ... ")
        if opts.email and opts.password:
            session = pyacd.login(opts.email, opts.password)
        else:
            fp = open(opts.session, "rb")
            session = pickle.load(fp)
            fp.close()
            session = pyacd.login(session=session)
    except:
        pass

    # Check login status
    if not session:
        sys.stderr.write("Unexpected error occured.\n")
        sys.exit(2)
    elif not session.is_valid():
        sys.stderr.write("Session is invalid.\n%s\n" % session)
        sys.exit(2)
    elif not session.is_logined():
        sys.stderr.write("Login failed.\n%s\n" % session)
        sys.exit(2)

    if not opts.quiet:
        sys.stderr.write("Done\n")

    if opts.session:
        if not opts.quiet:
            sys.stderr.write("Updating %s ... " % opts.session)
        fp = open(opts.session, "wb")
        fp.truncate()
        pickle.dump(session, fp)
        fp.close()
        if not opts.quiet:
            sys.stderr.write("Done\n")

    for path in args:
        if path[0] != '/': path = '/' + path

        if not opts.quiet:
            sys.stderr.write("Moving %s to Recycle ... " % (path))

        # get path
        if opts.verbose:
            sys.stderr.write("get ")
        try:
            pathobj = pyacd.api.get_info_by_path(path)
        except pyacd.PyAmazonCloudDriveApiException, e:
            sys.stderr.write("Aborted. ('%s')\n" % e.message)
            continue
        if opts.verbose:
            sys.stderr.write("-> ")

        if pathobj.Type != pyacd.types.FILE and pathobj.Type != pyacd.types.FOLDER:
            sys.stderr.write("Aborted. ('%s<%s>' is special entity.)" %
                             (path, pathobj.Type))
            continue

        # move
        if opts.verbose:
            sys.stderr.write("move ")
        pyacd.api.recycle_bulk_by_id([
            pathobj.object_id,
        ])
        if opts.verbose:
            sys.stderr.write("-> ")

        if not opts.quiet:
            sys.stderr.write("Done\n")
def main():
  opts,args=parser.parse_args(sys.argv[1:])

  # Check options of authentication
  if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session):
    pass
  elif not opts.email or not opts.password:
    sys.stderr.write("!! email and password are required !!\n")
    parser.print_help()
    sys.exit(2)
    
  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("!! no file selected !!\n")
    parser.print_help()
    sys.exit(2)
  else:
    for file in args:
      if not os.path.exists(file):
        sys.stderr.write('Not found "%s"\n'%file)
        sys.exit(2)
      elif os.path.isdir(file):
        sys.stderr.write('"%s" is not file\n'%file)
        sys.exit(2)

  # Login to Amazon.com
  session=None
  try:
    if not opts.quiet:
      sys.stderr.write("Logining to Amazon.com ... ")
    if opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      fp=open(opts.session,"rb")
      session=pickle.load(fp)
      fp.close()
      session=pyacd.login(session=session)
  except:
    pass

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_valid():
    sys.stderr.write("Session is invalid.\n%s\n"%session)
    sys.exit(2)
  elif not session.is_logined():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  if not opts.quiet:
    sys.stderr.write("Done\n")

  if opts.session:
    if not opts.quiet:
      sys.stderr.write("Updating %s ... "%opts.session)
    fp=open(opts.session,"wb")
    fp.truncate()
    pickle.dump(session,fp)
    fp.close()
    if not opts.quiet:
      sys.stderr.write("Done\n")

  # Check destination
  path=opts.path
  if path[0]!='/':path='/'+path
  if path[-1]!='/':path=path+'/'
  try:
    dest = pyacd.api.get_info_by_path(path)
    if dest.Type == pyacd.types.FILE:
      sys.stderr.write('"%s" is file\n'%path)
      sys.exit(2)
  except pyacd.PyAmazonCloudDriveApiException,e:
    sys.stderr.write('"%s"\n'%e.message)
    sys.exit(2)
def main():
    opts, args = parser.parse_args(sys.argv[1:])

    # Check options of authentication
    if opts.session and os.path.exists(
            opts.session) and not os.path.isdir(opts.session):
        pass
    elif not opts.email or not opts.password:
        sys.stderr.write("!! email and password are required !!\n")
        parser.print_help()
        sys.exit(2)

    args = list(set(args))
    if "-" in args:
        args.remove("-")
        args += [x.strip() for x in sys.stdin.readlines()]

    if 0 == len(args):
        args.append("/")
    else:
        pass

    # Login to Amazon.com
    session = None
    try:
        if not opts.quiet:
            sys.stderr.write("Logining to Amazon.com ... ")
        if opts.email and opts.password:
            session = pyacd.login(opts.email, opts.password)
        else:
            fp = open(opts.session, "rb")
            session = pickle.load(fp)
            fp.close()
            session = pyacd.login(session=session)
    except:
        pass

    # Check login status
    if not session:
        sys.stderr.write("Unexpected error occured.\n")
        sys.exit(2)
    elif not session.is_valid():
        sys.stderr.write("Session is invalid.\n%s\n" % session)
        sys.exit(2)
    elif not session.is_logined():
        sys.stderr.write("Login failed.\n%s\n" % session)
        sys.exit(2)

    if not opts.quiet:
        sys.stderr.write("Done\n")

    if opts.session:
        if not opts.quiet:
            sys.stderr.write("Updating %s ... " % opts.session)
        fp = open(opts.session, "wb")
        fp.truncate()
        pickle.dump(session, fp)
        fp.close()
        if not opts.quiet:
            sys.stderr.write("Done\n")

    for path in args:
        if path[0] != '/': path = '/' + path

        if not opts.quiet:
            sys.stderr.write("Listing %s ... " % (path))

        # get path
        if opts.verbose:
            sys.stderr.write("get ")
        try:
            pathobj = pyacd.api.get_info_by_path(path)
        except pyacd.PyAmazonCloudDriveApiException, e:
            sys.stderr.write("Aborted. ('%s')\n" % e.message)
            continue
        if opts.verbose:
            sys.stderr.write("-> ")

        obj = []
        if pathobj.Type == pyacd.types.FILE:
            obj.append(pathobj)
        else:
            if opts.verbose:
                sys.stderr.write("info ")
            info = pyacd.api.list_by_id(pathobj.object_id)
            if opts.verbose:
                sys.stderr.write("-> ")
            obj += info.objects

        if not opts.quiet:
            sys.stderr.write("Done\n")

        #print obj
        if opts.long_format:
            print "total %s (%s)" % (len(obj), path)
            print "==modified========== ==size/type== ==version== ==name=========="
        for o in obj:
            if opts.list_type != "ALL" and opts.list_type != o.Type:
                continue
            if opts.long_format:
                print "%s " % datetime.datetime(
                    *time.localtime(o.modified)[:-3]).isoformat(),
                if o.Type == pyacd.types.FILE:
                    print "%13s" % (o.size if o.size else -1),
                else:
                    print "%13s" % ("<" + o.Type + ">"),

                print "%11s" % ("(" + str(o.version) + ")"),

            print o.name if o.Type == pyacd.types.FILE else o.name + "/"

        continue
예제 #12
0
def main():
    opts, args = parser.parse_args(sys.argv[1:])

    # Check options of authentication
    if opts.session and os.path.exists(
            opts.session) and not os.path.isdir(opts.session):
        pass
    elif not opts.email or not opts.password:
        sys.stderr.write("!! email and password are required !!\n")
        parser.print_help()
        sys.exit(2)

    args = list(set(args))
    if "-" in args:
        args.remove("-")
        args += [x.strip() for x in sys.stdin.readlines()]

    if 0 == len(args):
        sys.stderr.write("!! no dir selected !!\n")
        parser.print_help()
        sys.exit(2)
    else:
        pass

    # Login to Amazon.com
    session = None
    try:
        if not opts.quiet:
            sys.stderr.write("Logining to Amazon.com ... ")
        if opts.email and opts.password:
            session = pyacd.login(opts.email, opts.password)
        else:
            fp = open(opts.session, "rb")
            session = pickle.load(fp)
            fp.close()
            session = pyacd.login(session=session)
    except:
        pass

    # Check login status
    if not session:
        sys.stderr.write("Unexpected error occured.\n")
        sys.exit(2)
    elif not session.is_valid():
        sys.stderr.write("Session is invalid.\n%s\n" % session)
        sys.exit(2)
    elif not session.is_logined():
        sys.stderr.write("Login failed.\n%s\n" % session)
        sys.exit(2)

    if not opts.quiet:
        sys.stderr.write("Done\n")

    if opts.session:
        if not opts.quiet:
            sys.stderr.write("Updating %s ... " % opts.session)
        fp = open(opts.session, "wb")
        fp.truncate()
        pickle.dump(session, fp)
        fp.close()
        if not opts.quiet:
            sys.stderr.write("Done\n")

    for path in args:
        if path[0] != '/': path = '/' + path
        folder = path.split("/")[-1]
        parent = "/".join(path.split("/")[:-1])
        parent = parent if len(parent) != 0 else "/"

        if not opts.quiet:
            sys.stderr.write("Making %s in %s ... " % (folder, parent))

        # create folder
        if opts.verbose:
            sys.stderr.write("create ")
        try:
            pyacd.api.create_by_path(parent, folder, Type=pyacd.types.FOLDER)
        except pyacd.PyAmazonCloudDriveApiException, e:
            sys.stderr.write("Aborted. ('%s')\n" % e.message)
            continue
        if opts.verbose:
            sys.stderr.write("-> ")

        if not opts.quiet:
            sys.stderr.write("Done\n")
예제 #13
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])
  pyacd.set_amazon_domain(opts.domain)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("No dir selected.\n")
    parser.print_help()
    sys.exit(2)
  else:
    pass

  # Check options of authentication
  if opts.email:
    if not opts.password:
      opts.password = getpass.getpass()

  if (opts.email and opts.password) or opts.session:
    pass # OK case
  else:
    print >>sys.stderr, "Either email and password or session is mondatory."
    sys.exit(2)

  session = None; s = None
  if opts.session:
    if opts.verbose:
      print >>sys.stderr, "Loading previous session...",
    try:
      s=pyacd.Session.load_from_file(opts.session)
      if opts.verbose:
        print >>sys.stderr, "Done."
    except:
      s=pyacd.Session()
      if opts.verbose:
        print >>sys.stderr, "Failed."

  if opts.verbose:
    print >>sys.stderr, "Logging into %s..."%opts.domain,
  try:
    if opts.email and opts.password and s:
      session=pyacd.login(opts.email,opts.password,session=s)
    elif opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      session=pyacd.login(session=s)
    if opts.verbose:
      print >>sys.stderr, "Done."
  except:
    if opts.verbose:
      print >>sys.stderr, "Failed."
      sys.exit(2)

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_logged_in():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  for path in args:
    if path[0]!='/':path='/'+path
    folder = path.split("/")[-1]
    parent = "/".join(path.split("/")[:-1])
    parent = parent if len(parent)!=0 else "/"

    if opts.verbose:
      sys.stderr.write("Making %s in %s ... "%(folder,parent))

    # create folder
    try:
      pyacd.api.create_by_path(parent,folder,Type=pyacd.types.FOLDER)
    except pyacd.PyAmazonCloudDriveApiException,e:
      sys.stderr.write("Aborted.\n"%e.message)
      continue
    except pyacd.PyAmazonCloudDriveError,e:
      sys.stderr.write("Already exists.\n")
      continue
예제 #14
0
 def test_4_LoginWithNonePassword(self):
   try:
     session=pyacd.login(email,None)
   except TypeError,e:
     pass
예제 #15
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])
  pyacd.set_amazon_domain(opts.domain)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("No file selected.\n")
    parser.print_help()
    sys.exit(2)
  else:
    for file in args:
      if not os.path.exists(file):
        sys.stderr.write('Not found "%s"\n'%file)
        sys.exit(2)
      elif os.path.isdir(file):
        sys.stderr.write('"%s" is not file\n'%file)
        sys.exit(2)

  # Check options of authentication
  if opts.email:
    if not opts.password:
      opts.password = getpass.getpass()

  if (opts.email and opts.password) or opts.session:
    pass # OK case
  else:
    print >>sys.stderr, "Either email and password or session is mondatory."
    sys.exit(2)

  session = None; s = None
  if opts.session:
    if opts.verbose:
      print >>sys.stderr, "Loading previous session...",
    try:
      s=pyacd.Session.load_from_file(opts.session)
      if opts.verbose:
        print >>sys.stderr, "Done."
    except:
      s=pyacd.Session()
      if opts.verbose:
        print >>sys.stderr, "Failed."

  if opts.verbose:
    print >>sys.stderr, "Logging into %s..."%opts.domain,
  try:
    if opts.email and opts.password and s:
      session=pyacd.login(opts.email,opts.password,session=s)
    elif opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      session=pyacd.login(session=s)
    if opts.verbose:
      print >>sys.stderr, "Done."
  except:
    if opts.verbose:
      print >>sys.stderr, "Failed."
      sys.exit(2)

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_logged_in():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  # Check destination
  path=opts.path
  if path[0]!='/':path='/'+path
  if path[-1]!='/':path=path+'/'
  try:
    dest = pyacd.api.get_info_by_path(path)
    if dest.Type == pyacd.types.FILE:
      sys.stderr.write('"%s" is file\n'%path)
      sys.exit(2)
  except pyacd.PyAmazonCloudDriveApiException,e:
    sys.stderr.write('"%s"\n'%e.reason)
    sys.exit(2)
예제 #16
0
 def test_5_LoginWithNoneArgs(self):
   try:
     session=pyacd.login(None,None,None)
   except TypeError,e:
     pass
예제 #17
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])

  # Check options of authentication
  if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session):
    pass
  elif not opts.email or not opts.password:
    sys.stderr.write("!! email and password are required !!\n")
    parser.print_help()
    sys.exit(2)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    args.append("/")
  else:
    pass

  # Login to Amazon.com
  session=None
  try:
    if not opts.quiet:
      sys.stderr.write("Logining to Amazon.com ... ")
    if opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      fp=open(opts.session,"rb")
      session=pickle.load(fp)
      fp.close()
      session=pyacd.login(session=session)
  except:
    pass

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_valid():
    sys.stderr.write("Session is invalid.\n%s\n"%session)
    sys.exit(2)
  elif not session.is_logined():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  if not opts.quiet:
    sys.stderr.write("Done\n")

  if opts.session:
    if not opts.quiet:
      sys.stderr.write("Updating %s ... "%opts.session)
    fp=open(opts.session,"wb")
    fp.truncate()
    pickle.dump(session,fp)
    fp.close()
    if not opts.quiet:
      sys.stderr.write("Done\n")

  for path in args:
    if path[0]!='/':path='/'+path

    if not opts.quiet:
      sys.stderr.write("Listing %s ... "%(path))

    # get path
    if opts.verbose:
      sys.stderr.write("get ")
    try:
      pathobj = pyacd.api.get_info_by_path(path)
    except pyacd.PyAmazonCloudDriveApiException,e:
      sys.stderr.write("Aborted. ('%s')\n"%e.message)
      continue
    if opts.verbose:
      sys.stderr.write("-> ")

    obj=[]
    if pathobj.Type== pyacd.types.FILE:
      obj.append(pathobj)
    else:
      if opts.verbose:
        sys.stderr.write("info ")
      info = pyacd.api.list_by_id(pathobj.object_id)
      if opts.verbose:
        sys.stderr.write("-> ")
      obj+=info.objects

    if not opts.quiet:
      sys.stderr.write("Done\n")

    #print obj
    if opts.long_format:
      print "total %s (%s)"%(len(obj),path)
      print "==modified========== ==size/type== ==version== ==name=========="
    for o in obj:
      if opts.list_type!="ALL" and opts.list_type!=o.Type:
        continue
      if opts.long_format:
        print "%s "%datetime.datetime(*time.localtime(o.modified)[:-3]).isoformat(),
        if o.Type == pyacd.types.FILE:
          print "%13s"%(o.size if o.size else -1),
        else:
          print "%13s"%("<"+o.Type+">"),

        print "%11s"%("("+str(o.version)+")"),

      print o.name if o.Type == pyacd.types.FILE else o.name+"/"

    continue
예제 #18
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])
  pyacd.set_amazon_domain(opts.domain)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("No file selected.\n")
    parser.print_help()
    sys.exit(2)
  else:
    pass

  # Check destination
  path=opts.path
  if path[-1]!=os.sep:path=path+os.sep
  if not os.path.exists(path):
    sys.stderr.write('"%s" does not exist\n'%path)
    sys.exit(2)
  elif not os.path.isdir(path):
    sys.stderr.write('"%s" is not file\n'%path)
    sys.exit(2)


  # Check options of authentication
  if opts.email:
    if not opts.password:
      opts.password = getpass.getpass()

  if (opts.email and opts.password) or opts.session:
    pass # OK case
  else:
    print >>sys.stderr, "Either email and password or session is mondatory."
    sys.exit(2)

  session = None; s = None
  if opts.session:
    if opts.verbose:
      print >>sys.stderr, "Loading previous session...",
    try:
      s=pyacd.Session.load_from_file(opts.session)
      if opts.verbose:
        print >>sys.stderr, "Done."
    except:
      s=pyacd.Session()
      if opts.verbose:
        print >>sys.stderr, "Failed."

  if opts.verbose:
    print >>sys.stderr, "Logging into %s..."%opts.domain,
  try:
    if opts.email and opts.password and s:
      session=pyacd.login(opts.email,opts.password,session=s)
    elif opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      session=pyacd.login(session=s)
    if opts.verbose:
      print >>sys.stderr, "Done."
  except:
    if opts.verbose:
      print >>sys.stderr, "Failed."
      sys.exit(2)

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_logged_in():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)


  for f in args:
    if f[0]!='/':f='/'+f
    filename = os.path.basename(f)

    if opts.verbose:
      sys.stderr.write("Downloading %s to %s ... "%(f,path))

    if os.path.exists(path+filename) and not opts.force:
      sys.stderr.write("Aborted. ('%s' exists.)\n"%(path+filename))
      continue

    # get file
    try:
      fileobj = pyacd.api.get_info_by_path(f)
    except pyacd.PyAmazonCloudDriveApiException,e:
      sys.stderr.write("Aborted. ('%s')\n"%e.message)
      continue
    except pyacd.PyAmazonCloudDriveError,e:
      sys.stderr.write("Not found.\n")
      continue
예제 #19
0
 def setUp(self):
   session = pyacd.Session.load_from_file(acdsession)
   session = pyacd.login(session=session)
예제 #20
0
파일: acdput.py 프로젝트: pzingg/pyamzcloud
def main():
  opts,args=parser.parse_args(sys.argv[1:])

  # Check options of authentication
  if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session):
    pass
  elif not opts.email or not opts.password:
    sys.stderr.write("!! email and password are required !!\n")
    parser.print_help()
    sys.exit(2)
    
  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("!! no file selected !!\n")
    parser.print_help()
    sys.exit(2)
  else:
    for file in args:
      if not os.path.exists(file):
        sys.stderr.write('Not found "%s"\n'%file)
        sys.exit(2)
      elif os.path.isdir(file):
        sys.stderr.write('"%s" is not file\n'%file)
        sys.exit(2)

  # Login to Amazon.com
  session=None
  try:
    if not opts.quiet:
      sys.stderr.write("Logging in to Amazon.com ... ")
    if opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      fp=open(opts.session,"rb")
      session=pickle.load(fp)
      fp.close()
      session=pyacd.login(session=session)
  except:
    pass

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_valid():
    sys.stderr.write("Session is invalid.\n%s\n"%session)
    sys.exit(2)
  elif not session.is_logined():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  if not opts.quiet:
    sys.stderr.write("Done\n")

  if opts.session:
    if not opts.quiet:
      sys.stderr.write("Updating %s ... "%opts.session)
    fp=open(opts.session,"wb")
    fp.truncate()
    pickle.dump(session,fp)
    fp.close()
    if not opts.quiet:
      sys.stderr.write("Done\n")

  # Check destination
  path=opts.path
  if path[0]!='/':path='/'+path
  if path[-1]!='/':path=path+'/'
  try:
    dest = pyacd.api.get_info_by_path(path)
    if dest.Type == pyacd.types.FILE:
      sys.stderr.write('"%s" is file\n'%path)
      sys.exit(2)
  except pyacd.PyAmazonCloudDriveApiException,e:
    sys.stderr.write('"%s"\n'%str(e))
    sys.exit(2)
예제 #21
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])

  # Check options of authentication
  if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session):
    pass
  elif not opts.email or not opts.password:
    sys.stderr.write("!! email and password are required !!\n")
    parser.print_help()
    sys.exit(2)
    
  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 1!=len(args):
    sys.stderr.write("!! no source directory selected !!\n")
    parser.print_help()
    sys.exit(2)
  else:
    srcdir=args[0]
    if not os.path.exists(srcdir):
      sys.stderr.write('Not found "%s"\n'%srcdir)
      sys.exit(2)
    elif not os.path.isdir(srcdir):
      sys.stderr.write('"%s" is not a directory\n'%srcdir)
      sys.exit(2)

  # Login to Amazon.com
  session=None
  try:
    if not opts.quiet:
      sys.stderr.write("Logging in to Amazon.com ... ")
    if opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      fp=open(opts.session,"rb")
      session=pickle.load(fp)
      fp.close()
      session=pyacd.login(session=session)
  except:
    pass

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_valid():
    sys.stderr.write("Session is invalid.\n%s\n"%session)
    sys.exit(2)
  elif not session.is_logined():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  if not opts.quiet:
    sys.stderr.write("Done\n")

  if opts.session:
    if not opts.quiet:
      sys.stderr.write("Updating %s ... "%opts.session)
    fp=open(opts.session,"wb")
    fp.truncate()
    pickle.dump(session,fp)
    fp.close()
    if not opts.quiet:
      sys.stderr.write("Done\n")

  # Check destination
  path=opts.path
  if path[0]!='/':path='/'+path
  if path[-1]!='/':path=path+'/'

  basedir = os.path.abspath(args[0])
  baselen = len(basedir)
  directories = [ basedir ]
  while len(directories)>0:
    # entering new folder
    srcdir = directories.pop()
    destdir = path[:-1] + srcdir[baselen:]
    if not opts.quiet:
      sys.stderr.write("Uploading to folder '%s' ...\n"%destdir)
      
    try:
      fileobj = pyacd.api.get_info_by_path(destdir)
      if fileobj.Type == pyacd.types.FOLDER:
        # do nothing, folder exists
        pass
      elif fileobj.Type == pyacd.types.FILE:
        # problem, we won't use this folder
        if not opts.quiet:
          sys.stderr.write("Skipping destination '%s' - it's a file\n"%destdir)
        continue
      else:
        if not opts.quiet:
          sys.stderr.write("Skipping destination '%s' - type is %d\n"%(destdir,fileobj.Type))
        continue
    except pyacd.PyAmazonCloudDriveApiException,e:
      # error getting folder. no folder there, need to create  
      parent, folder = os.path.split(destdir)
      parent += '/'

      # Validate folder name - must satisfy regular expression pattern: 
      if not pyacd.validation.is_valid_member_name(folder):
        # replace double quotes with single quotes, others with _
        new_folder = pyacd.validation.rewrite_invalid_member_name(folder)
        if opts.verbose:
          sys.stderr.write("invalid folder '%s' - changed to '%s'"%(folder,new_folder))
        folder = new_folder
        destdir = os.path.join(parent,folder)

      if opts.verbose:
        sys.stderr.write("create folder '%s' in '%s'"%(folder,parent))
      if opts.dryrun:
        if opts.verbose:
          sys.stderr.write("(Done)\n")
      else:
        try:
          pyacd.api.create_by_path(parent,folder,Type=pyacd.types.FOLDER)
          if opts.verbose:
            sys.stderr.write("-> ")
          if not opts.quiet:
            sys.stderr.write("Done\n")
        except pyacd.PyAmazonCloudDriveApiException,e:
          sys.stderr.write("Aborted. ('%s')\n"%str(e))
          continue
예제 #22
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])

  # Check options of authentication
  if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session):
    pass
  elif not opts.email or not opts.password:
    sys.stderr.write("!! email and password are required !!\n")
    parser.print_help()
    sys.exit(2)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("!! no dir selected !!\n")
    parser.print_help()
    sys.exit(2)
  else:
    pass

  # Login to Amazon.com
  session=None
  try:
    if not opts.quiet:
      sys.stderr.write("Logining to Amazon.com ... ")
    if opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      fp=open(opts.session,"rb")
      session=pickle.load(fp)
      fp.close()
      session=pyacd.login(session=session)
  except:
    pass

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_valid():
    sys.stderr.write("Session is invalid.\n%s\n"%session)
    sys.exit(2)
  elif not session.is_logined():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  if not opts.quiet:
    sys.stderr.write("Done\n")

  if opts.session:
    if not opts.quiet:
      sys.stderr.write("Updating %s ... "%opts.session)
    fp=open(opts.session,"wb")
    fp.truncate()
    pickle.dump(session,fp)
    fp.close()
    if not opts.quiet:
      sys.stderr.write("Done\n")

  for path in args:
    if path[0]!='/':path='/'+path
    folder = path.split("/")[-1]
    parent = "/".join(path.split("/")[:-1])
    parent = parent if len(parent)!=0 else "/"

    if not opts.quiet:
      sys.stderr.write("Making %s in %s ... "%(folder,parent))

    # create folder
    if opts.verbose:
      sys.stderr.write("create ")
    try:
      pyacd.api.create_by_path(parent,folder,Type=pyacd.types.FOLDER)
    except pyacd.PyAmazonCloudDriveApiException,e:
      sys.stderr.write("Aborted. ('%s')\n"%e.message)
      continue
    if opts.verbose:
      sys.stderr.write("-> ")

    if not opts.quiet:
      sys.stderr.write("Done\n")
예제 #23
0
def main():
  opts,args=parser.parse_args(sys.argv[1:])

  # Check options of authentication
  if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session):
    pass
  elif not opts.email or not opts.password:
    sys.stderr.write("!! email and password are required !!\n")
    parser.print_help()
    sys.exit(2)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("!! no file selected !!\n")
    parser.print_help()
    sys.exit(2)
  else:
    pass
    
  # Check destination
  path=opts.path
  if path[-1]!=os.sep:path=path+os.sep
  if not os.path.exists(path):
    sys.stderr.write('"%s" does not exist\n'%path)
    sys.exit(2)
  elif not os.path.isdir(path):
    sys.stderr.write('"%s" is not file\n'%path)
    sys.exit(2)

  # Login to Amazon.com
  session=None
  try:
    if not opts.quiet:
      sys.stderr.write("Logining to Amazon.com ... ")
    if opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      fp=open(opts.session,"rb")
      session=pickle.load(fp)
      fp.close()
      session=pyacd.login(session=session)
  except:
    pass

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_valid():
    sys.stderr.write("Session is invalid.\n%s\n"%session)
    sys.exit(2)
  elif not session.is_logined():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  if not opts.quiet:
    sys.stderr.write("Done\n")
    
  if opts.session:
    if not opts.quiet:
      sys.stderr.write("Updating %s ... "%opts.session)
    fp=open(opts.session,"wb")
    fp.truncate()
    pickle.dump(session,fp)
    fp.close()
    if not opts.quiet:
      sys.stderr.write("Done\n")

  for file in args:
    if file[0]!='/':file='/'+file
    filename = os.path.basename(file)

    if not opts.quiet:
      sys.stderr.write("Downloading %s to %s ... "%(file,path))

    if os.path.exists(path+filename) and not opts.force:
      sys.stderr.write("Aborted. ('%s' exists.)\n"%(path+filename))
      continue

    # get file
    if opts.verbose:
      sys.stderr.write("get ")
    try:
      fileobj = pyacd.api.get_info_by_path(file)
    except pyacd.PyAmazonCloudDriveApiException,e:
      sys.stderr.write("Aborted. ('%s')\n"%e.message)
      continue
    if opts.verbose:
      sys.stderr.write("-> ")

    if fileobj.Type!= pyacd.types.FILE:
      sys.stderr.write("Aborted. ('%s' is not file.)"%file)
      continue

    # download
    data=pyacd.api.download_by_id(fileobj.object_id)
    

    f=open(path+filename,"wb")
    f.truncate()
    f.write(data)
    f.close()

    if not opts.quiet:
      sys.stderr.write("Done\n")
def main():
    opts, args = parser.parse_args(sys.argv[1:])

    # Check options of authentication
    if opts.session and os.path.exists(
            opts.session) and not os.path.isdir(opts.session):
        pass
    elif not opts.email or not opts.password:
        sys.stderr.write("!! email and password are required !!\n")
        parser.print_help()
        sys.exit(2)

    args = list(set(args))
    if "-" in args:
        args.remove("-")
        args += [x.strip() for x in sys.stdin.readlines()]

    if 0 == len(args):
        sys.stderr.write("!! no file selected !!\n")
        parser.print_help()
        sys.exit(2)
    else:
        pass

    # Check destination
    path = opts.path
    if path[-1] != os.sep: path = path + os.sep
    if not os.path.exists(path):
        sys.stderr.write('"%s" does not exist\n' % path)
        sys.exit(2)
    elif not os.path.isdir(path):
        sys.stderr.write('"%s" is not file\n' % path)
        sys.exit(2)

    # Login to Amazon.com
    session = None
    try:
        if not opts.quiet:
            sys.stderr.write("Logining to Amazon.com ... ")
        if opts.email and opts.password:
            session = pyacd.login(opts.email, opts.password)
        else:
            fp = open(opts.session, "rb")
            session = pickle.load(fp)
            fp.close()
            session = pyacd.login(session=session)
    except:
        pass

    # Check login status
    if not session:
        sys.stderr.write("Unexpected error occured.\n")
        sys.exit(2)
    elif not session.is_valid():
        sys.stderr.write("Session is invalid.\n%s\n" % session)
        sys.exit(2)
    elif not session.is_logined():
        sys.stderr.write("Login failed.\n%s\n" % session)
        sys.exit(2)

    if not opts.quiet:
        sys.stderr.write("Done\n")

    if opts.session:
        if not opts.quiet:
            sys.stderr.write("Updating %s ... " % opts.session)
        fp = open(opts.session, "wb")
        fp.truncate()
        pickle.dump(session, fp)
        fp.close()
        if not opts.quiet:
            sys.stderr.write("Done\n")

    for file in args:
        if file[0] != '/': file = '/' + file
        filename = os.path.basename(file)

        if not opts.quiet:
            sys.stderr.write("Downloading %s to %s ... " % (file, path))

        if os.path.exists(path + filename) and not opts.force:
            sys.stderr.write("Aborted. ('%s' exists.)\n" % (path + filename))
            continue

        # get file
        if opts.verbose:
            sys.stderr.write("get ")
        try:
            fileobj = pyacd.api.get_info_by_path(file)
        except pyacd.PyAmazonCloudDriveApiException, e:
            sys.stderr.write("Aborted. ('%s')\n" % e.message)
            continue
        if opts.verbose:
            sys.stderr.write("-> ")

        if fileobj.Type != pyacd.types.FILE:
            sys.stderr.write("Aborted. ('%s' is not file.)" % file)
            continue

        # download
        data = pyacd.api.download_by_id(fileobj.object_id)

        f = open(path + filename, "wb")
        f.truncate()
        f.write(data)
        f.close()

        if not opts.quiet:
            sys.stderr.write("Done\n")
def main():
  opts,args=parser.parse_args(sys.argv[1:])

  # Check options of authentication
  if opts.session and os.path.exists(opts.session) and not os.path.isdir(opts.session):
    pass
  elif not opts.email or not opts.password:
    sys.stderr.write("!! email and password are required !!\n")
    parser.print_help()
    sys.exit(2)

  args=list(set(args))
  if "-" in args:
    args.remove("-")
    args += [x.strip() for x in sys.stdin.readlines()]

  if 0==len(args):
    sys.stderr.write("!! no path selected !!\n")
    parser.print_help()
    sys.exit(2)
  else:
    pass
    
  # Login to Amazon.com
  session=None
  try:
    if not opts.quiet:
      sys.stderr.write("Logining to Amazon.com ... ")
    if opts.email and opts.password:
      session=pyacd.login(opts.email,opts.password)
    else:
      fp=open(opts.session,"rb")
      session=pickle.load(fp)
      fp.close()
      session=pyacd.login(session=session)
  except:
    pass

  # Check login status
  if not session:
    sys.stderr.write("Unexpected error occured.\n")
    sys.exit(2)
  elif not session.is_valid():
    sys.stderr.write("Session is invalid.\n%s\n"%session)
    sys.exit(2)
  elif not session.is_logined():
    sys.stderr.write("Login failed.\n%s\n"%session)
    sys.exit(2)

  if not opts.quiet:
    sys.stderr.write("Done\n")
    
  if opts.session:
    if not opts.quiet:
      sys.stderr.write("Updating %s ... "%opts.session)
    fp=open(opts.session,"wb")
    fp.truncate()
    pickle.dump(session,fp)
    fp.close()
    if not opts.quiet:
      sys.stderr.write("Done\n")

  for path in args:
    if path[0]!='/':path='/'+path

    if not opts.quiet:
      sys.stderr.write("Moving %s to Recycle ... "%(path))

    # get path
    if opts.verbose:
      sys.stderr.write("get ")
    try:
      pathobj = pyacd.api.get_info_by_path(path)
    except pyacd.PyAmazonCloudDriveApiException,e:
      sys.stderr.write("Aborted. ('%s')\n"%e.message)
      continue
    if opts.verbose:
      sys.stderr.write("-> ")

    if pathobj.Type!= pyacd.types.FILE and pathobj.Type!= pyacd.types.FOLDER :
      sys.stderr.write("Aborted. ('%s<%s>' is special entity.)"%(path,pathobj.Type))
      continue

    # move
    if opts.verbose:
      sys.stderr.write("move ")
    pyacd.api.recycle_bulk_by_id([pathobj.object_id,])
    if opts.verbose:
      sys.stderr.write("-> ")

    if not opts.quiet:
      sys.stderr.write("Done\n")