import urllib
-from django.utils import simplejson
+import json
import oauth2
-from apiclient.models import OAuthConnection
-from apiclient.settings import WL_CONSUMER_KEY, WL_CONSUMER_SECRET, WL_API_URL
+from apiclient.settings import WL_CONSUMER_KEY, WL_CONSUMER_SECRET, WL_API_URL, BETA_API_URL
if WL_CONSUMER_KEY and WL_CONSUMER_SECRET:
pass
-def api_call(user, path, data=None):
- # what if not verified?
+def api_call(user, path, data=None, beta=False):
+ from .models import OAuthConnection
+ api_url = BETA_API_URL if beta else WL_API_URL
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" % (api_url, path),
method="POST",
- body=urllib.urlencode(data))
+ body=data)
else:
resp, content = client.request(
- "%s%s.json" % (WL_API_URL, path))
+ "%s%s" % (api_url, path))
status = resp['status']
+
if status == '200':
- return simplejson.loads(content)
+ return json.loads(content)
elif status.startswith('2'):
return
+ elif status == '401':
+ raise ApiError('User not authorized for publishing.')
else:
- raise ApiError("WL API call error")
+ raise ApiError("WL API call error %s, path: %s" % (status, path))