public
Description: A simple Google App Engine blog
Homepage: http://www.benjamingolub.com
Clone URL: git://github.com/bgolub/blog.git
SUP, logging
Benjamin Golub (author)
Sun Nov 30 07:13:42 -0800 2008
commit  1c700dcff649efdf6d675714eb278370e04cf902
tree    01ba2587f051b84d1bf4c7a499bc6418a5288a79
parent  ab6b7f34ef0daba45367985966afd8d3e44a8af7
...
1
2
3
 
 
4
5
6
...
185
186
187
 
 
 
 
 
 
 
 
188
189
190
...
205
206
207
 
208
209
210
...
241
242
243
 
244
245
246
247
 
248
249
250
 
 
 
 
 
 
251
252
253
...
315
316
317
 
 
 
 
318
319
320
...
428
429
430
 
431
432
433
...
1
2
3
4
5
6
7
8
...
187
188
189
190
191
192
193
194
195
196
197
198
199
200
...
215
216
217
218
219
220
221
...
252
253
254
255
256
257
258
 
259
260
261
 
262
263
264
265
266
267
268
269
270
...
332
333
334
335
336
337
338
339
340
341
...
449
450
451
452
453
454
455
0
@@ -1,6 +1,8 @@
0
 import BeautifulSoup
0
 import feedgenerator
0
 import functools
0
+import hashlib
0
+import logging
0
 import os
0
 import uuid
0
 import urllib
0
@@ -185,6 +187,14 @@ class BaseRequestHandler(webapp.RequestHandler):
0
         if img:
0
             return {"url": img["src"]}
0
         return None
0
+
0
+    def generate_sup_id(self, url=None):
0
+        return hashlib.md5(url or self.request.url).hexdigest()[:10]
0
+
0
+    def set_sup_id_header(self):
0
+        sup_id = self.generate_sup_id()
0
+        self.response.headers["X-SUP-ID"] = \
0
+            "http://friendfeed.com/api/public-sup.json#%s" % sup_id
0
             
0
     def render_feed(self, entries):
0
         f = MediaRSSFeed(
0
@@ -205,6 +215,7 @@ class BaseRequestHandler(webapp.RequestHandler):
0
             )
0
         data = f.writeString("utf-8")
0
         self.response.headers["Content-Type"] = "application/atom+xml"
0
+        self.set_sup_id_header()
0
         self.response.out.write(data)
0
 
0
     def render_json(self, entries):
0
@@ -241,13 +252,19 @@ class BaseRequestHandler(webapp.RequestHandler):
0
         self.response.out.write(template.render(path, extra_context))
0
 
0
     def ping(self, entry=None):
0
+        feed = "http://" + self.request.host + "/?format=atom"
0
         args = urllib.urlencode({
0
             "name": TITLE,
0
             "url": "http://" + self.request.host + "/",
0
-            "changesURL": "http://" + self.request.host + "/?format=atom",
0
+            "changesURL": feed,
0
         })
0
         response = urlfetch.fetch("http://blogsearch.google.com/ping?" + args)
0
-        return response.status_code
0
+        args = urllib.urlencode({
0
+            "url": feed,
0
+            "supid": self.generate_sup_id(feed),
0
+        })
0
+        response = urlfetch.fetch("http://friendfeed.com/api/public-sup-ping?" \
0
+            + args)
0
 
0
     def is_valid_xhtml(self, entry):
0
         args = urllib.urlencode({
0
@@ -315,6 +332,10 @@ class FeedRedirectHandler(BaseRequestHandler):
0
 
0
 
0
 class MainPageHandler(BaseRequestHandler):
0
+    def head(self):
0
+        if self.request.get("format", None) == "atom":
0
+            self.set_sup_id_header()
0
+
0
     def get(self):
0
         offset = self.get_integer_argument("start", 0)
0
         if not offset:
0
@@ -428,6 +449,7 @@ application = webapp.WSGIApplication([
0
 ], debug=True)
0
 
0
 def main():
0
+    logging.getLogger().setLevel(logging.DEBUG)
0
     run_wsgi_app(application)
0
 
0
 if __name__ == "__main__":

Comments