support individual file upload

This commit is contained in:
j 2012-03-16 17:15:05 +01:00
parent 4aa92f9e3b
commit 9413bc4a7a

View file

@ -453,20 +453,26 @@ class Client(object):
return return
conn, c = self._conn() conn, c = self._conn()
if args: if args:
info = {}
data = [] data = []
for arg in args: for arg in args:
if os.path.exists(arg): if os.path.exists(arg):
self.scan_file(arg)
oshash = ox.oshash(arg) oshash = ox.oshash(arg)
info[oshash] = self.info(oshash) r = self.api.findFiles({'query': {
'conditions': [{'key': 'oshash', 'value': oshash}]
}})['data']['items']
if r == 0:
self.scan_file(arg)
info = self.info(oshash)
filename = os.path.basename(arg)
r = self.api.addFile({
'id': oshash,
'info': info,
'filename': filename
})
data.append(oshash) data.append(oshash)
else: else:
data.append(arg) data.append(arg)
files = [] files = []
if info:
post = {'info': info}
r = self.api.update(post)
else: else:
#send empty list to get updated list of requested info/files/data #send empty list to get updated list of requested info/files/data
post = {'info': {}} post = {'info': {}}
@ -495,7 +501,7 @@ class Client(object):
print "failed to login again" print "failed to login again"
return return
break break
def files(self, prefix): def files(self, prefix):
conn, c = self._conn() conn, c = self._conn()
files = {} files = {}
@ -619,6 +625,7 @@ class API(ox.API):
data = self._json_request(url, form) data = self._json_request(url, form)
print filename print filename
result_url = data.get('url')
if 'uploadUrl' in data: if 'uploadUrl' in data:
uploadUrl = data['uploadUrl'] uploadUrl = data['uploadUrl']
f = open(filename) f = open(filename)
@ -684,6 +691,8 @@ class API(ox.API):
os.unlink(self._resume_file) os.unlink(self._resume_file)
resume = None resume = None
print ' ' * 80 print ' ' * 80
if result_url:
print result_url
return data and 'result' in data and data.get('result') == 1 return data and 'result' in data and data.get('result') == 1
else: else:
if DEBUG: if DEBUG: