class CalendariumRomanum::Remote::Driver
Orchestrates retrieval and deserialization of calendar data from a server accessed throught HTTP GET requests and returning JSON responses.
Public Class Methods
new(uri_scheme, denormalizer)
click to toggle source
# File lib/calendarium-romanum/remote/driver.rb, line 7 def initialize(uri_scheme, denormalizer) @uri_scheme = uri_scheme @denormalizer = denormalizer end
Public Instance Methods
day(date)
click to toggle source
# File lib/calendarium-romanum/remote/driver.rb, line 12 def day(date) process :day, date end
year(year)
click to toggle source
# File lib/calendarium-romanum/remote/driver.rb, line 16 def year(year) process :year, year end
Protected Instance Methods
handle_errors(response)
click to toggle source
# File lib/calendarium-romanum/remote/driver.rb, line 40 def handle_errors(response) if response.code != 200 raise UnexpectedResponseError.new("Unexpected HTTP status #{response.code.inspect}") end end
process(action, argument)
click to toggle source
# File lib/calendarium-romanum/remote/driver.rb, line 22 def process(action, argument) uri = @uri_scheme.public_send action, argument response = request uri handle_errors response data = MultiJson.load response.body @denormalizer.public_send action, data end
request(uri)
click to toggle source
# File lib/calendarium-romanum/remote/driver.rb, line 31 def request(uri) request = HTTPI::Request.new uri request.headers['Accept'] = 'application/json' request.headers['User-Agent'] = 'calendarium-romanum-remote/' + Remote::VERSION HTTPI.get request end