- implement reader

This commit is contained in:
Alex Ling
2020-02-12 20:17:45 +00:00
parent 0b2ec2d002
commit f126dfb430
4 changed files with 83 additions and 1 deletions
+36
View File
@@ -32,6 +32,42 @@ get "/book/:title" do |env|
layout "title"
end
get "/reader/:title/:entry" do |env|
# We should save the reading progress, and ask the user if she wants to
# start over or resume. For now we just start from page 0
begin
title = library.get_title env.params.url["title"]
raise "" if title.nil?
entry = title.get_entry env.params.url["entry"]
raise "" if entry.nil?
env.redirect "/reader/#{title.title}/#{entry.title}/0"
rescue
env.response.status_code = 404
end
end
get "/reader/:title/:entry/:page" do |env|
imgs_each_page = 5
# here each :page contains `imgs_each_page` images
begin
title = library.get_title env.params.url["title"]
raise "" if title.nil?
entry = title.get_entry env.params.url["entry"]
raise "" if entry.nil?
page = env.params.url["page"].to_i
raise "" if page * imgs_each_page >= entry.pages
urls = ((page * imgs_each_page)...\
[entry.pages, (page + 1) * imgs_each_page].min) \
.map { |idx| "/api/page/#{title.title}/#{entry.title}/#{idx}" }
next_url = "/reader/#{title.title}/#{entry.title}/#{page + 1}"
next_url = nil if (page + 1) * imgs_each_page >= entry.pages
render "src/views/reader.ecr"
rescue
env.response.status_code = 404
end
end
get "/login" do |env|
render "src/views/login.ecr"
end