From 1b1216ec861188e4d1e3e7bb5dc167525c1aa88a Mon Sep 17 00:00:00 2001 From: zhangxiaorun Date: Tue, 4 Mar 2014 10:37:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=B0=86=E6=8C=87=E5=AE=9A=E7=9A=84?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=88=B0=E5=BF=AB=E7=9B=98?= =?UTF-8?q?=E4=B8=AD=E6=8C=87=E5=AE=9A=E8=B7=AF=E5=BE=84=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kuaipan.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Kuaipan.py b/Kuaipan.py index 991a43d..a9e233d 100644 --- a/Kuaipan.py +++ b/Kuaipan.py @@ -284,19 +284,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) From 3e8ae030cd5841def219e7ab14ecf22df8619111 Mon Sep 17 00:00:00 2001 From: gausszh Date: Wed, 5 Mar 2014 02:46:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=BF=99=E4=B8=AAoauth2=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=BE=88=E5=A5=87=E8=91=A9=EF=BC=8C=E5=B0=86=E4=BC=A0=E8=BF=9B?= =?UTF-8?q?=E6=9D=A5=E7=9A=84parameters=E5=AD=97=E5=85=B8=E4=B8=AD?= =?UTF-8?q?=E7=9A=84key=E5=92=8Cvale=E5=85=A8=E9=83=A8=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E4=B8=BAunicode=EF=BC=8C=E7=84=B6=E5=90=8E=E5=86=8D=E5=B0=86?= =?UTF-8?q?=E5=85=B6urllib.urlencode=E3=80=82=E5=8F=AF=E6=98=AF=E6=88=91?= =?UTF-8?q?=E4=BB=AC=E6=8C=87=E5=AE=9Aurllib.urlencode=E6=98=AF=E5=8F=AA?= =?UTF-8?q?=E6=8E=A5=E5=8F=97=20str=20=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E7=9A=84=E3=80=82=E6=89=80=E4=BB=A5=E8=BF=99?= =?UTF-8?q?=E5=B0=B1=E7=9F=9B=E7=9B=BE=E6=9D=A5=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kuaipan.py | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/Kuaipan.py b/Kuaipan.py index a9e233d..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,