make api more pythonic, add __doc__ to functions

This commit is contained in:
j 2010-12-04 15:14:54 +01:00
parent 7507b32383
commit 1ac0604b9f
2 changed files with 37 additions and 21 deletions

21
README
View file

@ -24,15 +24,16 @@ pandora client example:
just using the API:
api = pandora_client.API("http://localhost:8000/api/")
r = api.find({
'query': {'conditions':[]},
'keys': ['title', 'year'],
'range': [0, 100]
})
for i in r['data']['items']:
...
api = pandora_client.API("http://localhost:8000/api/")
r = api.find(
query={'conditions':[]},
keys=['title', 'year'],
range=[0, 100]
)
for i in r['data']['items']:
...
api features and documentation is available at the api end point,
i.e. http://localhost:8000/api/
forther api documentation is available as python docstrings.
api.find?
and there is a web api documentation at i.e. http://localhost:8000/api/

View file

@ -55,7 +55,7 @@ class Client(object):
self.api = API(self._config['url'], media_cache=self.media_cache())
if 'username' in self._config:
r = self.api.login({'username':self._config['username'], 'password':self._config['password']})
r = self.api.login(username=self._config['username'], password=self._config['password'])
if r['status']['code'] == 200:
self.user = r['data']['user']
else:
@ -251,16 +251,28 @@ class API(object):
self.media_cache = default_media_cache
self.url = url
r = self._request('api', {})
self._actions = r['data']['actions']
r = self._request('apidoc', {})
self._doc = r['data']['actions']
self._actions = r['data']['actions'].keys()
for a in r['data']['actions']:
setattr(self.__class__, a, self._action(a))
self._add_action(a)
def _action(self, action):
def f(self, data=None):
return self._request(action, data)
return f
#return lambda self, data:
def _add_method(self, method, name):
if name is None:
name = method.func_name
setattr(self.__class__, name, method)
def _add_action(self, action):
def method(self, *args, **kw):
if not kw:
if args:
kw = args[0]
else:
kw = None
return self._request(action, kw)
method.__doc__ = self._doc[action]
method.func_name = str(action)
self._add_method(method, action)
def _json_request(self, url, form):
try:
@ -304,6 +316,8 @@ class API(object):
return self._json_request(self.url, form)
def uploadVideo(self, filename, data, profile):
if DEBUG:
print filename
i = encode(filename, self.media_cache, profile)
#upload frames
@ -322,7 +336,8 @@ class API(object):
url = self.url + 'upload/' + '?profile=' + str(profile) + '&oshash=' + i['oshash']
ogg = Firefogg(cj=self._cj, debug=True)
ogg.upload(url, i['video'], data)
print "done"
if DEBUG:
print "done"
def uploadData(self, filename, oshash):
form = ox.MultiPartForm()