Advertisement
nocwat

gett-cli.patch

Apr 17th, 2017
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 5.11 KB | None | 0 0
  1. diff -rNup a/gett-cli/gett/gett.py b/gett-cli/gett/gett.py
  2. --- a/gett-cli/gett/gett.py 2017-04-18 00:21:57.697918273 +0800
  3. +++ b/gett-cli/gett/gett.py 2017-04-18 00:18:29.653921999 +0800
  4. @@ -32,7 +32,6 @@ from http.client import HTTPConnection
  5.  logger = logging.getLogger(__name__)
  6.  
  7.  API_BASE = 'https://open.ge.tt/1/'
  8. -API_KEY = 't05kormjprb2o6rm8f8wmts2thjjor'
  9.  
  10.  
  11.  class APIError(Exception):
  12. @@ -52,7 +51,7 @@ def _post_request(path, **kwargs):
  13.          url += '?' + urlencode(qskeys)
  14.  
  15.      input_data = json.dumps(kwargs).encode('utf-8')
  16. -    request = Request(url, input_data)
  17. +    request = Request(url, input_data, {"Content-Type":" application/json;charset=UTF-8"})
  18.  
  19.      return _request(request)
  20.  
  21. @@ -117,7 +116,7 @@ class User(object):
  22.      def login_auth(self, email, password):
  23.          logger.debug("Logging-in user %r", email)
  24.          result = _post_request('users/login',
  25. -            apikey=API_KEY, email=email, password=password
  26. +            email=email, password=password
  27.          )
  28.          self._load(result)
  29.  
  30. @@ -180,11 +179,12 @@ class Share(object):
  31.          if not self.url:
  32.              self.url = 'http://ge.tt/%s' % self.name
  33.  
  34. -        for file_result in result['files']:
  35. -            f = File(self)
  36. -            f._load(file_result)
  37. +        if 'files' in result:
  38. +            for file_result in result['files']:
  39. +                f = File(self)
  40. +                f._load(file_result)
  41.  
  42. -            self.files[f.id] = f
  43. +                self.files[f.id] = f
  44.  
  45.      def refresh(self):
  46.          logger.debug("Refreshing share %r", self.name)
  47. @@ -209,15 +209,25 @@ class UserShare(Share):
  48.              _accesstoken=self.user.atoken
  49.          )
  50.  
  51. -    def create_file(self, filename, size=None):
  52. +    def create_file(self, filename, filesize=None, fileid=None):
  53.          logger.debug("Creating file %r in user share %r", filename, self.name)
  54. -        result = _post_request('files/%s/create' % self.name,
  55. -            _accesstoken=self.user.atoken, filename=filename
  56. -        )
  57. -        file = File(self)
  58. -        file._load(result)
  59. -        file.size = size
  60. -        self.files[file.id] = file
  61. +        file = None
  62. +        if fileid is not None:
  63. +            result = _get_request('files/%s/%s/upload' % (self.name, fileid),
  64. +                accesstoken=self.user.atoken
  65. +            )
  66. +            file = self.files[fileid]
  67. +            file._load(result, fileid)
  68. +            file.name = filename
  69. +            file.size = filesize
  70. +        else:
  71. +            result = _post_request('files/%s/create' % self.name,
  72. +                _accesstoken=self.user.atoken, filename=filename, size=filesize
  73. +            )
  74. +            file = File(self)
  75. +            file._load(result)
  76. +            file.size = filesize
  77. +            self.files[file.id] = file
  78.          return file
  79.  
  80.  
  81. @@ -225,14 +235,17 @@ class File(object):
  82.      def __init__(self, share):
  83.          self.share = share
  84.  
  85. -    def _load(self, result):
  86. -        self.name = result['filename']
  87. -        self.id = result['fileid']
  88. -        self.size = result.get('size')
  89. -        self.downloads = result['downloads']
  90. -        self.readystate = result['readystate']
  91. -        self.created = datetime.datetime.fromtimestamp(result['created'])
  92. -        self.url = result.get('getturl')
  93. +    def _load(self, result, fileid=None):
  94. +        if fileid is None:
  95. +            self.name = result['filename']
  96. +            self.id = result['fileid']
  97. +            self.size = result.get('size')
  98. +            self.downloads = result['downloads']
  99. +            self.readystate = result['readystate']
  100. +            self.created = datetime.datetime.fromtimestamp(result['created'])
  101. +            self.url = result.get('getturl')
  102. +        else:
  103. +            self.id = fileid
  104.  
  105.          # FIXME: work around API omission
  106.          if not self.url:
  107. @@ -240,6 +253,8 @@ class File(object):
  108.  
  109.          if 'upload' in result:
  110.              self.put_url = result['upload']['puturl']
  111. +        elif 'puturl' in result:
  112. +            self.put_url = result['puturl']
  113.          else:
  114.              self.put_url = None
  115.  
  116. diff -rNup a/gett-cli/gett/uploader.py b/gett-cli/gett/uploader.py
  117. --- a/gett-cli/gett/uploader.py 2017-04-18 00:21:57.697918273 +0800
  118. +++ b/gett-cli/gett/uploader.py 2017-04-12 23:56:35.937965886 +0800
  119. @@ -347,6 +347,8 @@ def main():
  120.      # File uploads
  121.  
  122.      if args.file:
  123. +        fileid = None
  124. +
  125.          if args.share:
  126.              # Upload to existing share
  127.  
  128. @@ -354,6 +356,8 @@ def main():
  129.  
  130.              if match:
  131.                  share = user.get_share(match.group(1))
  132. +                if match.group(2):
  133. +                    fileid = match.group(2)
  134.              else:
  135.                  parser.error("argument --list: invalid share name, please supply either URL or name")
  136.          else:
  137. @@ -372,7 +376,7 @@ def main():
  138.  
  139.          for fp in chain.from_iterable(args.file):
  140.              name = os.path.basename(fp.name)
  141. -            file = share.create_file(name, os.path.getsize(fp.name))
  142. +            file = share.create_file(name, os.path.getsize(fp.name), fileid)
  143.  
  144.              upload = FileUpload(file, fp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement