diff --git a/Kuaipan.py b/Kuaipan.py index 991a43d..4ed9192 100644 --- a/Kuaipan.py +++ b/Kuaipan.py @@ -44,6 +44,46 @@ class Kuaipan(object): def __init__(self): super(Kuaipan, self).__init__() +class MyOatuthRequest(oauth.Request): + """docstring for MyOatuthRequest""" + def __init__(self, method="GET", url=None, parameters=None, + body='', is_form_encoded=False): + if url is not None: + self.url = url + self.method = method + if parameters is not None: + for k, v in parameters.iteritems(): + self[k] = v + self.body = body + self.is_form_encoded = is_form_encoded + + @classmethod + def from_consumer_and_token(cls, consumer, token=None, + http_method="GET", http_url=None, parameters=None, + body='', is_form_encoded=False): + if not parameters: + parameters = {} + + defaults = { + 'oauth_consumer_key': consumer.key, + 'oauth_timestamp': cls.make_timestamp(), + 'oauth_nonce': cls.make_nonce(), + 'oauth_version': cls.version, + } + + defaults.update(parameters) + parameters = defaults + + if token: + parameters['oauth_token'] = token.key + if token.verifier: + parameters['oauth_verifier'] = token.verifier + + return MyOatuthRequest(http_method, http_url, parameters, body=body, + is_form_encoded=is_form_encoded) + + + class KuaipanFile(object): """ Support all functions for Kuaipan fileops. You may add/delete/remove/edit your file on Kuaipan with simple functino calls @@ -96,7 +136,7 @@ def SetUrlHandler(self, UsePoster=False, UseCookie=False, PacketDebug=False): return opener def GetOauthUrl(self, url, method='GET', parameters=None): - oauth_request = oauth.Request.from_consumer_and_token(self.consumer, + oauth_request = MyOatuthRequest.from_consumer_and_token(self.consumer, token=self.token, http_method=method, http_url=url, @@ -284,19 +324,22 @@ def shares(self, filepath, root='app_folder', name=None, access_code=None): def upload_file(self, localfile, kuaipan_path=None, ForceOverwrite=True): """ Description : 上传文件 + Args: + localfile: 本地文件路径 + kuaipan_path: 快盘的路径 Reference link : http://www.kuaipan.cn/developers/document_apiupload.htm """ url = '%s1/fileops/upload_file' url = url % (self.upload_locate()['url']) - parameters = {'path': localfile, + parameters = {'path': kuaipan_path, 'root': 'app_folder', 'overwrite' : ForceOverwrite } target_url = self.GetOauthUrl(url, method='POST', parameters=parameters) #poster.streaminghttp.register_openers() self.SetUrlHandler(UsePoster=True) - data, headers = poster.encode.multipart_encode({"image1": open(parameters['path'], "rb")}) + data, headers = poster.encode.multipart_encode({"file": open(localfile, "rb")}) request = urllib2.Request(target_url, data=data, headers=headers) try: response = urllib2.urlopen(request)