|
|
@ -21,6 +21,7 @@ import sys
|
|
|
|
import base64
|
|
|
|
import base64
|
|
|
|
import os
|
|
|
|
import os
|
|
|
|
import uuid
|
|
|
|
import uuid
|
|
|
|
|
|
|
|
from datetime import datetime
|
|
|
|
from time import gmtime, strftime
|
|
|
|
from time import gmtime, strftime
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
from urllib import unquote
|
|
|
|
from urllib import unquote
|
|
|
@ -213,6 +214,7 @@ def HandleMetadataRequest(book_uuid):
|
|
|
|
|
|
|
|
|
|
|
|
def get_download_url_for_book(book, book_format):
|
|
|
|
def get_download_url_for_book(book, book_format):
|
|
|
|
if not current_app.wsgi_app.is_proxied:
|
|
|
|
if not current_app.wsgi_app.is_proxied:
|
|
|
|
|
|
|
|
if request.environ['SERVER_NAME'] != '::':
|
|
|
|
return "{url_scheme}://{url_base}:{url_port}/download/{book_id}/{book_format}".format(
|
|
|
|
return "{url_scheme}://{url_base}:{url_port}/download/{book_id}/{book_format}".format(
|
|
|
|
url_scheme=request.environ['wsgi.url_scheme'],
|
|
|
|
url_scheme=request.environ['wsgi.url_scheme'],
|
|
|
|
url_base=request.environ['SERVER_NAME'],
|
|
|
|
url_base=request.environ['SERVER_NAME'],
|
|
|
@ -220,6 +222,14 @@ def get_download_url_for_book(book, book_format):
|
|
|
|
book_id=book.id,
|
|
|
|
book_id=book.id,
|
|
|
|
book_format=book_format.lower()
|
|
|
|
book_format=book_format.lower()
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return "{url_scheme}://{url_base}:{url_port}/download/{book_id}/{book_format}".format(
|
|
|
|
|
|
|
|
url_scheme=request.environ['wsgi.url_scheme'],
|
|
|
|
|
|
|
|
url_base=request.host, # ToDo: both server ??
|
|
|
|
|
|
|
|
url_port=config.config_port,
|
|
|
|
|
|
|
|
book_id=book.id,
|
|
|
|
|
|
|
|
book_format=book_format.lower()
|
|
|
|
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return url_for(
|
|
|
|
return url_for(
|
|
|
|
"web.download_link",
|
|
|
|
"web.download_link",
|
|
|
@ -234,14 +244,14 @@ def create_book_entitlement(book):
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
"Accessibility": "Full",
|
|
|
|
"Accessibility": "Full",
|
|
|
|
"ActivePeriod": {"From": current_time(),},
|
|
|
|
"ActivePeriod": {"From": current_time(),},
|
|
|
|
"Created": book.timestamp,
|
|
|
|
"Created": book.timestamp.strftime("%Y-%m-%dT%H:%M:%SZ"),
|
|
|
|
"CrossRevisionId": book_uuid,
|
|
|
|
"CrossRevisionId": book_uuid,
|
|
|
|
"Id": book_uuid,
|
|
|
|
"Id": book_uuid,
|
|
|
|
"IsHiddenFromArchive": False,
|
|
|
|
"IsHiddenFromArchive": False,
|
|
|
|
"IsLocked": False,
|
|
|
|
"IsLocked": False,
|
|
|
|
# Setting this to true removes from the device.
|
|
|
|
# Setting this to true removes from the device.
|
|
|
|
"IsRemoved": False,
|
|
|
|
"IsRemoved": False,
|
|
|
|
"LastModified": book.last_modified,
|
|
|
|
"LastModified": book.last_modified.strftime("%Y-%m-%dT%H:%M:%SZ"),
|
|
|
|
"OriginCategory": "Imported",
|
|
|
|
"OriginCategory": "Imported",
|
|
|
|
"RevisionId": book_uuid,
|
|
|
|
"RevisionId": book_uuid,
|
|
|
|
"Status": "Active",
|
|
|
|
"Status": "Active",
|
|
|
@ -376,7 +386,7 @@ def TopLevelEndpoint():
|
|
|
|
@kobo.route("/v1/library/tags/<shelf_name>", methods=["POST"])
|
|
|
|
@kobo.route("/v1/library/tags/<shelf_name>", methods=["POST"])
|
|
|
|
@kobo.route("/v1/library/tags/<tag_id>", methods=["DELETE"])
|
|
|
|
@kobo.route("/v1/library/tags/<tag_id>", methods=["DELETE"])
|
|
|
|
def HandleUnimplementedRequest(dummy=None, book_uuid=None, shelf_name=None, tag_id=None):
|
|
|
|
def HandleUnimplementedRequest(dummy=None, book_uuid=None, shelf_name=None, tag_id=None):
|
|
|
|
log.debug("Alternative Request received:")
|
|
|
|
log.debug("Unimplemented Library Request received: %s", request.base_url)
|
|
|
|
return redirect_or_proxy_request()
|
|
|
|
return redirect_or_proxy_request()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -397,6 +407,7 @@ def HandleUserRequest(dummy=None):
|
|
|
|
@kobo.route("/v1/products/<dummy>/reviews", methods=["GET", "POST"])
|
|
|
|
@kobo.route("/v1/products/<dummy>/reviews", methods=["GET", "POST"])
|
|
|
|
@kobo.route("/v1/products/books/<dummy>", methods=["GET", "POST"])
|
|
|
|
@kobo.route("/v1/products/books/<dummy>", methods=["GET", "POST"])
|
|
|
|
@kobo.route("/v1/products/dailydeal", methods=["GET", "POST"])
|
|
|
|
@kobo.route("/v1/products/dailydeal", methods=["GET", "POST"])
|
|
|
|
|
|
|
|
@kobo.route("/v1/products", methods=["GET", "POST"])
|
|
|
|
def HandleProductsRequest(dummy=None):
|
|
|
|
def HandleProductsRequest(dummy=None):
|
|
|
|
log.debug("Unimplemented Products Request received: %s", request.base_url)
|
|
|
|
log.debug("Unimplemented Products Request received: %s", request.base_url)
|
|
|
|
return redirect_or_proxy_request()
|
|
|
|
return redirect_or_proxy_request()
|
|
|
|