pandoralocal/pandoralocal/api.py

100 lines
2.6 KiB
Python

# encoding: utf-8
# vi:si:et:sw=4:sts=4:ts=4
import os
from server import actions, json_response
from ui import ui
def init(backend, site, data):
response = {}
return json_response(response)
actions.register(init, cache=False)
def echo(backend, site, data):
return json_response(data)
actions.register(echo, cache=False)
def site(backend, site, data):
return json_response({'site': site})
actions.register(site, cache=False)
def addVolume(backend, site, data):
print data
path = ui.selectFolder(data)
if path:
name = os.path.basename(path)
volume = backend.add_volume(site, name, path)
return json_response(volume)
return json_response({})
actions.register(addVolume, cache=False)
def removeVolume(backend, site, data):
print data
return json_response({})
actions.register(removeVolume, cache=False)
def renameVolume(backend, site, data):
volume = backend.rename_volume(site, data['name'], data['newName'])
return json_response(volume)
actions.register(renameVolume, cache=False)
def findVolumes(backend, site, data):
print site, data
response = {}
response['items'] = backend.volumes(site)
return json_response(response)
actions.register(findVolumes, cache=False)
def findFiles(backend, site, data):
'''
implements Ox.List api for files
keys: path, id, size, volume, item, uploaded
'''
print site, data
response = {}
if not 'keys' in data:
response['items'] = backend.files(site, keys=['count(*)'])[0]['count(*)']
print response
else:
response['items'] = backend.files(site, keys=data['keys'], limit=data['range'])
return json_response(response)
actions.register(findFiles, cache=False)
def uploadFile(backend, site, data):
'''
uploadFile {
id:
}
upload file with provides id
'''
print data
return json_response({})
actions.register(uploadFile, cache=False)
def encodeFile(backend, site, data):
path = ui.selectFile(data)
oshash = backend.add_file(site, path)
url = '/%s/480p.webm' % oshash
return json_response({
'path': path,
'oshash': oshash,
'url': url
})
actions.register(encodeFile, cache=False)
def cacheVideo(backend, site, data):
print data
return json_response({})
actions.register(encodeFile, cache=False)
def selectFile(backend, site, data):
path = ui.selectFile(data)
oshash = backend.add_file(site, path)
return json_response({
'path': path,
'oshash': oshash
})
actions.register(selectFile, cache=False)