mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-02 19:05:32 -04:00
Apply cache on page, cover api
Get image data and use it for hashing
This commit is contained in:
parent
cd8944ed2d
commit
25b90a8724
@ -1,6 +1,7 @@
|
|||||||
require "../mangadex/*"
|
require "../mangadex/*"
|
||||||
require "../upload"
|
require "../upload"
|
||||||
require "koa"
|
require "koa"
|
||||||
|
require "digest"
|
||||||
|
|
||||||
struct APIRouter
|
struct APIRouter
|
||||||
@@api_json : String?
|
@@api_json : String?
|
||||||
@ -81,6 +82,7 @@ struct APIRouter
|
|||||||
tid = env.params.url["tid"]
|
tid = env.params.url["tid"]
|
||||||
eid = env.params.url["eid"]
|
eid = env.params.url["eid"]
|
||||||
page = env.params.url["page"].to_i
|
page = env.params.url["page"].to_i
|
||||||
|
prev_e_tag = env.request.headers["If-None-Match"]?
|
||||||
|
|
||||||
title = Library.default.get_title tid
|
title = Library.default.get_title tid
|
||||||
raise "Title ID `#{tid}` not found" if title.nil?
|
raise "Title ID `#{tid}` not found" if title.nil?
|
||||||
@ -90,7 +92,14 @@ struct APIRouter
|
|||||||
raise "Failed to load page #{page} of " \
|
raise "Failed to load page #{page} of " \
|
||||||
"`#{title.title}/#{entry.title}`" if img.nil?
|
"`#{title.title}/#{entry.title}`" if img.nil?
|
||||||
|
|
||||||
send_img env, img
|
e_tag = Digest::SHA1.hexdigest img.data
|
||||||
|
if prev_e_tag == e_tag
|
||||||
|
env.response.status_code = 304
|
||||||
|
""
|
||||||
|
else
|
||||||
|
env.response.headers["ETag"] = e_tag
|
||||||
|
send_img env, img
|
||||||
|
end
|
||||||
rescue e
|
rescue e
|
||||||
Logger.error e
|
Logger.error e
|
||||||
env.response.status_code = 500
|
env.response.status_code = 500
|
||||||
@ -102,12 +111,14 @@ struct APIRouter
|
|||||||
Koa.path "tid", desc: "Title ID"
|
Koa.path "tid", desc: "Title ID"
|
||||||
Koa.path "eid", desc: "Entry ID"
|
Koa.path "eid", desc: "Entry ID"
|
||||||
Koa.response 200, schema: Bytes, media_type: "image/*"
|
Koa.response 200, schema: Bytes, media_type: "image/*"
|
||||||
|
Koa.response 304, ""
|
||||||
Koa.response 500, "Page not found or not readable"
|
Koa.response 500, "Page not found or not readable"
|
||||||
Koa.tag "library"
|
Koa.tag "library"
|
||||||
get "/api/cover/:tid/:eid" do |env|
|
get "/api/cover/:tid/:eid" do |env|
|
||||||
begin
|
begin
|
||||||
tid = env.params.url["tid"]
|
tid = env.params.url["tid"]
|
||||||
eid = env.params.url["eid"]
|
eid = env.params.url["eid"]
|
||||||
|
prev_e_tag = env.request.headers["If-None-Match"]?
|
||||||
|
|
||||||
title = Library.default.get_title tid
|
title = Library.default.get_title tid
|
||||||
raise "Title ID `#{tid}` not found" if title.nil?
|
raise "Title ID `#{tid}` not found" if title.nil?
|
||||||
@ -118,7 +129,14 @@ struct APIRouter
|
|||||||
raise "Failed to get cover of `#{title.title}/#{entry.title}`" \
|
raise "Failed to get cover of `#{title.title}/#{entry.title}`" \
|
||||||
if img.nil?
|
if img.nil?
|
||||||
|
|
||||||
send_img env, img
|
e_tag = Digest::SHA1.hexdigest img.data
|
||||||
|
if prev_e_tag == e_tag
|
||||||
|
env.response.status_code = 304
|
||||||
|
""
|
||||||
|
else
|
||||||
|
env.response.headers["ETag"] = e_tag
|
||||||
|
send_img env, img
|
||||||
|
end
|
||||||
rescue e
|
rescue e
|
||||||
Logger.error e
|
Logger.error e
|
||||||
env.response.status_code = 500
|
env.response.status_code = 500
|
||||||
|
Loading…
x
Reference in New Issue
Block a user