muse-dl/src/fetch.cr

26 lines
633 B
Crystal
Raw Normal View History

2020-03-28 19:29:47 +00:00
require "crest"
2020-03-28 21:07:14 +00:00
require "./errors/*"
2020-03-28 19:29:47 +00:00
module Muse::Dl
class Fetch
2020-03-28 19:51:36 +00:00
def get_info(url : String) : (Muse::Dl::Book | Muse::Dl::Journal)
2020-03-28 19:29:47 +00:00
match = /https:\/\/muse.jhu.edu\/(book|journal)\/(\d+)/.match url
if match
begin
response = Crest.get url
2020-03-28 19:51:36 +00:00
case match[1]
when "book"
return Muse::Dl::Book.new response
when "journal"
return Muse::Dl::Journal.new response
end
2020-03-28 19:29:47 +00:00
rescue ex : Crest::NotFound
2020-03-28 21:07:14 +00:00
raise Muse::Dl::Errors::InvalidLink
2020-03-28 19:29:47 +00:00
end
else
2020-03-28 21:07:14 +00:00
raise Muse::Dl::Errors::InvalidLink
2020-03-28 19:29:47 +00:00
end
end
end
end