class OpenParliament::RequestService

Constants

VALID_PARAMS

Public Class Methods

new(klass) click to toggle source
# File lib/open_parliament/request_service.rb, line 6
def initialize(klass)
  @klass = klass
end

Public Instance Methods

get(params = {}) click to toggle source
# File lib/open_parliament/request_service.rb, line 10
def get(params = {})
  json = make_request(url: @klass.resource_url, method: :get, params: params)
  objects = json["objects"]
  objects.map { |object_json| @klass.new(object_json) }
end

Private Instance Methods

build_headers() click to toggle source
# File lib/open_parliament/request_service.rb, line 31
def build_headers
  {
    "API-Version" => "v1",
    accept: :json,
    params: build_params,
  }
end
build_params() click to toggle source
# File lib/open_parliament/request_service.rb, line 39
def build_params
  filtered_params = @params.select { |k| (VALID_PARAMS + @klass.valid_filters).include?(k) }
  default_params.merge(filtered_params)
end
default_params() click to toggle source
# File lib/open_parliament/request_service.rb, line 44
def default_params
  {
    limit: 20,
    offset: 0,
  }
end
make_request(url:, method:, params: {}) click to toggle source
# File lib/open_parliament/request_service.rb, line 19
def make_request(url:, method:, params: {})
  @params = params

  full_url = "#{OpenParliament::API_URL}#{url}"
  resp = RestClient::Request.execute(method: method, 
                                     url: full_url,
                                     timeout: 10,
                                     headers: build_headers,
                                     )
  JSON.parse(resp)
end