Files
Mango/src/routes/reader.cr
2020-12-30 15:58:51 +00:00

52 lines
1.4 KiB
Crystal

struct ReaderRouter
def initialize
get "/reader/:title/:entry" do |env|
begin
username = get_username env
title = (Library.default.get_title env.params.url["title"]).not_nil!
entry = (title.get_entry env.params.url["entry"]).not_nil!
next layout "reader-error" if entry.err_msg
# load progress
page = [1, entry.load_progress username].max
# start from page 1 if the user has finished reading the entry
page = 1 if entry.finished? username
redirect env, "/reader/#{title.id}/#{entry.id}/#{page}"
rescue e
Logger.error e
env.response.status_code = 404
end
end
get "/reader/:title/:entry/:page" do |env|
begin
base_url = Config.current.base_url
username = get_username env
title = (Library.default.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 "" if page > entry.pages || page <= 0
exit_url = "#{base_url}book/#{title.id}"
next_entry_url = nil
next_entry = entry.next_entry username
unless next_entry.nil?
next_entry_url = "#{base_url}reader/#{title.id}/#{next_entry.id}"
end
render "src/views/reader.html.ecr"
rescue e
Logger.error e
env.response.status_code = 404
end
end
end
end