git.fiddlerwoaroof.com
Browse code

Add API call for a certain number of subscriptions

- This is mainly so the Chrome extension can show a list of subscriptions. (v1.3)

fiddlerwoaroof authored on 07/07/2015 23:28:28
Showing 1 changed files
... ...
@@ -81,7 +81,7 @@ def submit_link():
81 81
                 result['id'] = res[0]
82 82
             else:
83 83
                 db.rollback()
84
-    return json.dumps(result)
84
+    return json.dumps(result), 200, {'Content-Type':'application/json'}
85 85
 
86 86
 @bone_blueprint.route('',defaults={'username':None}, methods=['GET'])
87 87
 @bone_blueprint.route('/u/<username>', methods=['GET'])
... ...
@@ -129,23 +129,33 @@ def subscribe():
129 129
             result = True
130 130
     return json.dumps(result);
131 131
 
132
-@bone_blueprint.route('/subscriptions', defaults={'before':None})
133
-@bone_blueprint.route('/subscriptions/<before>')
134
-def subscriptions(before):
135
-    username = None
132
+@bone_blueprint.route('/subscriptions', defaults={'before':None, 'count': None})
133
+@bone_blueprint.route('/subscriptions/<before>', defaults={'count': None})
134
+@bone_blueprint.route('/subscriptions/count/<int:count>', defaults={'before': None})
135
+@cross_origin(allow_headers='Content-Type')
136
+def subscriptions(before, count):
136 137
     result = {'marrow':[], 'sectionTitle': 'Subscriptions'}
137
-    if 'username' in session:
138
+    db = database.get_db()
139
+    username = None
140
+    if 'username' in request.args:
141
+        username = request.args['username']
142
+        if 'ak' not in request.args: username = None
143
+        elif not database.check_ak(db, username, request.args['ak']): username = None
144
+    if username is None and 'username' in session:
138 145
         username = session['username']
139
-        with database.get_db().cursor() as cur:
140
-            args = (username,50) # only 50 results
146
+
147
+    if username is not None:
148
+        with db.cursor() as cur:
149
+            if count is None or count > 200: count = 50  # 50 results or up to 200 results
150
+            args = (username,count)
141 151
             if before is not None:
142 152
                 before = dateutil.parser.parse(before)
143 153
                 args = args + (before,)
144 154
             cur.callproc("get_bones", args)
145 155
             result['marrow'] = [
146
-                    dict(poster=poster, url=url,title=title,posted=posted.isoformat())
147
-                        for url,title,posted,poster
148
-                        in cur.fetchall()
156
+                dict(poster=poster, url=url,title=title,posted=posted.isoformat())
157
+                    for url,title,posted,poster
158
+                    in cur.fetchall()
149 159
             ]
150 160
     return json.dumps(result)
151 161