nmhive.py: Add GET /gmane/<group>/<int:article>
authorW. Trevor King <wking@tremily.us>
Sat, 20 Sep 2014 19:51:37 +0000 (12:51 -0700)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Sep 2014 19:51:37 +0000 (12:51 -0700)
commitc9cd99947fb7a01f28d2a16d171558f429b19ebf
tree6328a86eaf6b0ace217b4cbf09bd9a9b1fa9b5af
parentfe31ab80e42372f2b4ad9b7b21f7027cea37c2e6
nmhive.py: Add GET /gmane/<group>/<int:article>

Gmane's download endpoint [1] doesn't allow cross-origin requests, and
article.gmane.org -> download.gmane.org is a cross-origin request [2].
Work around that with this proxy endpoint, which uses Flask-Cors [3]
to accept all origins.  The bookmarklet can figure out the current
message's group and article id, and hit this endpoint.  Then nmhive
will use Gmane's download endpoint to fetch the message as an mbox,
after which we can use Python's stdlib to extract the Message-ID from
the mbox, and return the extracted Message-ID to the bookmarklet.

Later on we can also add local caching and rate-limiting here, so we
don't bother Gmane more than necessary (the downloads are somewhat
expensive [1]).

[1]: http://gmane.org/export.php
[2]: https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Definition_of_an_origin
[3]: https://pypi.python.org/pypi/Flask-Cors/
nmhive.py [new file with mode: 0755]