mirror of
https://github.com/hkalexling/Mango.git
synced 2026-01-25 00:00:36 -05:00
93 lines
2.2 KiB
Crystal
93 lines
2.2 KiB
Crystal
require "./router"
|
|
|
|
class APIRouter < Router
|
|
def setup
|
|
get "/api/page/:tid/:eid/:page" do |env|
|
|
begin
|
|
tid = env.params.url["tid"]
|
|
eid = env.params.url["eid"]
|
|
page = env.params.url["page"].to_i
|
|
|
|
title = @context.library.get_title tid
|
|
raise "Title ID `#{tid}` not found" if title.nil?
|
|
entry = title.get_entry eid
|
|
raise "Entry ID `#{eid}` of `#{title.title}` not found" if \
|
|
entry.nil?
|
|
img = entry.read_page page
|
|
raise "Failed to load page #{page} of " \
|
|
"`#{title.title}/#{entry.title}`" if img.nil?
|
|
|
|
send_img env, img
|
|
rescue e
|
|
@context.error e
|
|
env.response.status_code = 500
|
|
e.message
|
|
end
|
|
end
|
|
|
|
get "/api/book/:title" do |env|
|
|
begin
|
|
tid = env.params.url["tid"]
|
|
title = @context.library.get_title tid
|
|
raise "Title ID `#{tid}` not found" if title.nil?
|
|
|
|
send_json env, title.to_json
|
|
rescue e
|
|
@context.error e
|
|
env.response.status_code = 500
|
|
e.message
|
|
end
|
|
end
|
|
|
|
get "/api/book" do |env|
|
|
send_json env, @context.library.to_json
|
|
end
|
|
|
|
post "/api/admin/scan" do |env|
|
|
start = Time.utc
|
|
@context.library.scan
|
|
ms = (Time.utc - start).total_milliseconds
|
|
send_json env, {
|
|
"milliseconds" => ms,
|
|
"titles" => @context.library.titles.size
|
|
}.to_json
|
|
end
|
|
|
|
post "/api/admin/user/delete/:username" do |env|
|
|
begin
|
|
username = env.params.url["username"]
|
|
@context.storage.delete_user username
|
|
rescue e
|
|
@context.error e
|
|
send_json env, {
|
|
"success" => false,
|
|
"error" => e.message
|
|
}.to_json
|
|
else
|
|
send_json env, {"success" => true}.to_json
|
|
end
|
|
end
|
|
|
|
post "/api/progress/:title/:entry/:page" do |env|
|
|
begin
|
|
username = get_username env
|
|
title = (@context.library.get_title env.params.url["title"])
|
|
.not_nil!
|
|
entry = (title.get_entry env.params.url["entry"]).not_nil!
|
|
page = env.params.url["page"].to_i
|
|
|
|
raise "incorrect page value" if page < 0 || page > entry.pages
|
|
title.save_progress username, entry.title, page
|
|
rescue e
|
|
@context.error e
|
|
send_json env, {
|
|
"success" => false,
|
|
"error" => e.message
|
|
}.to_json
|
|
else
|
|
send_json env, {"success" => true}.to_json
|
|
end
|
|
end
|
|
end
|
|
end
|