mirror of
https://github.com/hkalexling/Mango.git
synced 2026-03-20 00:00:48 -04:00
Split routes in server.cr into small files
This commit is contained in:
92
src/routes/api.cr
Normal file
92
src/routes/api.cr
Normal file
@@ -0,0 +1,92 @@
|
||||
require "./router"
|
||||
|
||||
class APIRouter < Router
|
||||
def setup
|
||||
get "/api/page/:title/:entry/:page" do |env|
|
||||
begin
|
||||
title = env.params.url["title"]
|
||||
entry = env.params.url["entry"]
|
||||
page = env.params.url["page"].to_i
|
||||
|
||||
t = @context.library.get_title title
|
||||
raise "Title `#{title}` not found" if t.nil?
|
||||
e = t.get_entry entry
|
||||
raise "Entry `#{entry}` of `#{title}` not found" if e.nil?
|
||||
img = e.read_page page
|
||||
raise "Failed to load page #{page} of `#{title}/#{entry}`"\
|
||||
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
|
||||
title = env.params.url["title"]
|
||||
|
||||
t = @context.library.get_title title
|
||||
raise "Title `#{title}` not found" if t.nil?
|
||||
|
||||
send_json env, t.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
|
||||
Reference in New Issue
Block a user