class Laa::ApplyForLegalAid::Api::Request

Constants

HTTP_METHODS
HTTP_METHODS_WITH_BODY

Attributes

action[R]
connection[R]
path[R]

Public Class Methods

new(action, path, connection) click to toggle source
# File lib/laa/apply_for_legal_aid/api/request.rb, line 10
def initialize(action, path, connection)
  @action = action
  @path = path
  @connection = connection
  validate_http_method
end

Public Instance Methods

call(options = {}) click to toggle source
# File lib/laa/apply_for_legal_aid/api/request.rb, line 17
def call(options = {})
  # TODO: wrap the response in a response object we own
  connection.send(action) do |request|
    request.url(path, options[:query] || {})
    request.body = request_body(options[:data]) if body_required? && options.has_key?(:data)
  end
end

Private Instance Methods

body_required?() click to toggle source
# File lib/laa/apply_for_legal_aid/api/request.rb, line 34
def body_required?
  HTTP_METHODS_WITH_BODY.include?(action)
end
request_body(data) click to toggle source
# File lib/laa/apply_for_legal_aid/api/request.rb, line 38
def request_body(data)
  return data if data.is_a?(String)
  data.to_json
end
validate_http_method() click to toggle source
# File lib/laa/apply_for_legal_aid/api/request.rb, line 29
def validate_http_method
  return if HTTP_METHODS.include?(action)
  raise ArgumentError, "invalid HTTP method #{action}"
end