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