index.html: Avoid interpreting nmbug.js as text/xml
[nmhive.git] / nmhive.py
1 #!/usr/bin/env python
2
3 import json
4 import mailbox
5 import tempfile
6 import urllib.request
7
8 import flask
9 import flask_cors
10
11
12 app = flask.Flask(__name__)
13 flask_cors.CORS(app)
14
15
16 @app.route('/gmane/<group>/<int:article>', methods=['GET'])
17 def gmane_message_id(group, article):
18     url = 'http://download.gmane.org/{}/{}/{}'.format(
19         group, article, article + 1)
20     response = urllib.request.urlopen(url=url, timeout=3)
21     mbox_bytes = response.read()
22     with tempfile.NamedTemporaryFile(prefix='nmbug-', suffix='.mbox') as f:
23         f.write(mbox_bytes)
24         mbox = mailbox.mbox(path=f.name)
25         _, message = mbox.popitem()
26         message_id = message['message-id']
27     return flask.Response(
28         response=message_id.lstrip('<').rstrip('>'),
29         mimetype='text/plain')
30
31
32 if __name__ == '__main__':
33     app.debug = True
34     app.run(host='0.0.0.0')