X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/ce8d791a5298e0cb2569034aec4c8b57afac97b2..507752b933a466dd8e962c0e34d0ec74d6de55b7:/apps/apiclient/__init__.py?ds=sidebyside diff --git a/apps/apiclient/__init__.py b/apps/apiclient/__init__.py index 7913ac3c..485bf606 100644 --- a/apps/apiclient/__init__.py +++ b/apps/apiclient/__init__.py @@ -1,10 +1,12 @@ +# -*- coding: utf-8 -*- +import json import urllib -from django.utils import simplejson import oauth2 from apiclient.models import OAuthConnection from apiclient.settings import WL_CONSUMER_KEY, WL_CONSUMER_SECRET, WL_API_URL +from django.conf import settings if WL_CONSUMER_KEY and WL_CONSUMER_SECRET: @@ -22,25 +24,29 @@ class NotAuthorizedError(BaseException): def api_call(user, path, data=None): - # what if not verified? conn = OAuthConnection.get(user) if not conn.access: raise NotAuthorizedError("No WL authorization for user %s." % user) token = oauth2.Token(conn.token, conn.token_secret) client = oauth2.Client(wl_consumer, token) if data is not None: + data = json.dumps(data) + data = urllib.urlencode({"data": data}) resp, content = client.request( - "%s%s.json" % (WL_API_URL, path), + "%s%s" % (WL_API_URL, path), method="POST", - body=urllib.urlencode(data)) + body=data) else: - resp, content = client.request( - "%s%s.json" % (WL_API_URL, path)) + resp, content = client.request("%s%s" % (WL_API_URL, path)) status = resp['status'] + if status == '200': - return simplejson.loads(content) + return json.loads(content) elif status.startswith('2'): return + elif settings.DEBUG: + raise ApiError(content) + elif status == '401': + raise ApiError('User not authorized for publishing.') else: - raise ApiError("WL API call error") - + raise ApiError("WL API call error [code %s]" % status)