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
|