def get(ctx, rd, what, book_id, library_id): book_id, rest = book_id.partition('_')[::2] try: book_id = int(book_id) except Exception: raise HTTPNotFound('Book with id %r does not exist' % book_id) db = get_db(ctx, rd, library_id) if db is None: raise HTTPNotFound('Library %r not found' % library_id) with db.safe_read_lock: if not ctx.has_id(rd, db, book_id): raise BookNotFound(book_id, db) library_id = db.server_library_id # in case library_id was None if what == 'thumb': sz = rd.query.get('sz') w, h = 60, 80 if sz is None: if rest: try: w, h = map(int, rest.split('_')) except Exception: pass elif sz == 'full': w = h = None elif 'x' in sz: try: w, h = map(int, sz.partition('x')[::2]) except Exception: pass else: try: w = h = int(sz) except Exception: pass return cover(ctx, rd, library_id, db, book_id, width=w, height=h) elif what == 'cover': return cover(ctx, rd, library_id, db, book_id) elif what == 'opf': mi = db.get_metadata(book_id, get_cover=False) rd.outheaders['Content-Type'] = 'application/oebps-package+xml; charset=UTF-8' rd.outheaders['Last-Modified'] = http_date(timestampfromdt(mi.last_modified)) return metadata_to_opf(mi) elif what == 'json': from calibre.srv.ajax import book_to_json data, last_modified = book_to_json(ctx, rd, db, book_id) rd.outheaders['Last-Modified'] = http_date(timestampfromdt(last_modified)) return json(ctx, rd, get, data) else: try: return book_fmt(ctx, rd, library_id, db, book_id, what.lower()) except NoSuchFormat: raise HTTPNotFound('No %s format for the book %r' % (what.lower(), book_id))
def get(ctx, rd, what, book_id, library_id): db = ctx.get_library(library_id) if db is None: raise HTTPNotFound("Library %r not found" % library_id) with db.safe_read_lock: if book_id not in ctx.allowed_book_ids(rd, db): raise HTTPNotFound("Book with id %r does not exist" % book_id) library_id = db.server_library_id # in case library_id was None if what == "thumb": sz = rd.query.get("sz") w, h = 60, 80 if sz is None: pass elif sz == "full": w = h = None elif "x" in sz: try: w, h = map(int, sz.partition("x")[::2]) except Exception: pass else: try: w = h = int(sz) except Exception: pass return cover(ctx, rd, library_id, db, book_id, width=w, height=h) elif what == "cover": return cover(ctx, rd, library_id, db, book_id) elif what == "opf": mi = db.get_metadata(book_id, get_cover=False) rd.outheaders["Content-Type"] = "application/oebps-package+xml; charset=UTF-8" rd.outheaders["Last-Modified"] = http_date(timestampfromdt(mi.last_modified)) return metadata_to_opf(mi) elif what == "json": from calibre.srv.ajax import book_to_json data, last_modified = book_to_json(ctx, rd, db, book_id) rd.outheaders["Last-Modified"] = http_date(timestampfromdt(last_modified)) return json(ctx, rd, get, data) else: try: return book_fmt(ctx, rd, library_id, db, book_id, what.lower()) except NoSuchFormat: raise HTTPNotFound("No %r format for the book %r" % (what.lower(), book_id))
def generate(): db, library_id = get_library_data(ctx, rd.query)[:2] return json(ctx, rd, tag_browser, categories_as_json(ctx, rd, db))
def generate(): return json(ctx, rd, tag_browser, categories_as_json(ctx, rd, db, opts, vl))
def generate(): db, library_id = get_library_data(ctx, rd)[:2] return json(ctx, rd, tag_browser, categories_as_json(ctx, rd, db))