Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 46 additions & 3 deletions Kuaipan.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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)
Expand Down