Fix: replace-all now handles the case where new string contains the old one as a...
[redakcja.git] / apps / apiclient / __init__.py
index 7913ac3..376b66e 100644 (file)
@@ -22,25 +22,29 @@ class NotAuthorizedError(BaseException):
 
 
 def api_call(user, path, data=None):
 
 
 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:
     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 = simplejson.dumps(data)
+        data = urllib.urlencode({"data": data})
         resp, content = client.request(
         resp, content = client.request(
-                "%s%s.json" % (WL_API_URL, path),
+                "%s%s" % (WL_API_URL, path),
                 method="POST",
                 method="POST",
-                body=urllib.urlencode(data))
+                body=data)
     else:
         resp, content = client.request(
     else:
         resp, content = client.request(
-                "%s%s.json" % (WL_API_URL, path))
+                "%s%s" % (WL_API_URL, path))
     status = resp['status']
     status = resp['status']
+
     if status == '200':
         return simplejson.loads(content)
     elif status.startswith('2'):
         return
     if status == '200':
         return simplejson.loads(content)
     elif status.startswith('2'):
         return
+    elif status == '401':
+        raise ApiError('User not authorized for publishing.')
     else:
     else:
-        raise ApiError("WL API call error")
+        raise ApiError("WL API call error [code %s]" % status)