make preview available to peers

This commit is contained in:
j 2016-01-15 12:58:01 +05:30
commit 3339c641c1
2 changed files with 59 additions and 6 deletions

View file

@ -109,7 +109,12 @@ class Handler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
import item.models
id = self.path.split('/')[-1] if self.path.startswith('/get/') else None
parts = self.path.split('/')
if len(parts) == 3 and parts[1] in ('get', 'preview'):
id = parts[2]
preview = parts[1] == 'preview'
else:
id = None
if id and len(id) == 32 and id.isalnum():
with db.session():
i = item.models.Item.get(id)
@ -119,6 +124,21 @@ class Handler(http.server.SimpleHTTPRequestHandler):
self.end_headers()
self.wfile.write(b'404 - Not Found')
return
if preview:
from item.icons import icons
key = 'preview:' + id
data = icons[key]
if data:
self.send_response(200, 'ok')
self.send_header('Content-type', 'image/jpg')
else:
self.send_response(404, 'Not Found')
self.send_header('Content-type', 'text/plain')
data = b'404 - Not Found'
self.send_header('Content-Length', str(len(data)))
self.end_headers()
self.wfile.write(data)
return
path = i.get_path()
mimetype = {
'epub': 'application/epub+zip',