mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-03 03:15:31 -04:00
Apply cache on dimensions api
Use zip_path and mtime for hashing It used for weak validation
This commit is contained in:
parent
25b90a8724
commit
2426ef05ec
@ -649,21 +649,31 @@ struct APIRouter
|
|||||||
"height" => Int32,
|
"height" => Int32,
|
||||||
}],
|
}],
|
||||||
}
|
}
|
||||||
|
Koa.response 304
|
||||||
get "/api/dimensions/:tid/:eid" do |env|
|
get "/api/dimensions/: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?
|
||||||
entry = title.get_entry eid
|
entry = title.get_entry eid
|
||||||
raise "Entry ID `#{eid}` of `#{title.title}` not found" if entry.nil?
|
raise "Entry ID `#{eid}` of `#{title.title}` not found" if entry.nil?
|
||||||
|
|
||||||
sizes = entry.page_dimensions
|
file_hash = Digest::SHA1.hexdigest (entry.zip_path + entry.mtime.to_s)
|
||||||
send_json env, {
|
e_tag = "W/#{file_hash}"
|
||||||
"success" => true,
|
if e_tag == prev_e_tag
|
||||||
"dimensions" => sizes,
|
env.response.status_code = 304
|
||||||
}.to_json
|
""
|
||||||
|
else
|
||||||
|
sizes = entry.page_dimensions
|
||||||
|
env.response.headers["ETag"] = e_tag
|
||||||
|
send_json env, {
|
||||||
|
"success" => true,
|
||||||
|
"dimensions" => sizes,
|
||||||
|
}.to_json
|
||||||
|
end
|
||||||
rescue e
|
rescue e
|
||||||
Logger.error e
|
Logger.error e
|
||||||
send_json env, {
|
send_json env, {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user