class MaponClient::Client

Constants

AVAILABLE_FORMATS
DEFAULT_BASE_URL
JSON
OBJECT
STRUCTURE
XML

Attributes

api_key[R]
base_url[R]
format[R]
parser_class[R]
request_format[R]
resource_base[R]

Public Class Methods

new(api_key: nil, base_url: nil, format: nil) click to toggle source
# File lib/mapon_client/client.rb, line 17
def initialize(api_key: nil, base_url: nil, format: nil)
  @api_key  = api_key  || ENV['MAPON_CLIENT_API_KEY']
  @base_url = base_url || DEFAULT_BASE_URL
  @format   = format   || JSON

  set_request_format
  set_parser_class

  @resource_base ||= RestClient::Resource.new(
    @base_url, headers: { params: { key: @api_key } }
  )
end

Public Instance Methods

[](*args) click to toggle source
# File lib/mapon_client/client.rb, line 30
def [](*args)
  @resource_base.public_send(
    :[],
    *append_format_to_url(*args)
  )
end
append_format_to_url(*args) click to toggle source
# File lib/mapon_client/client.rb, line 49
def append_format_to_url(*args)
  suburl = "#{args.shift}.#{@request_format}"
  args.unshift(suburl)
end
with_key(params) click to toggle source
# File lib/mapon_client/client.rb, line 45
def with_key(params)
  params.merge(key: @api_key)
end

Private Instance Methods

set_parser_class() click to toggle source
# File lib/mapon_client/client.rb, line 64
def set_parser_class
  @parser_class = if @format == STRUCTURE
    MaponClient::Parsers::StructureParser
  elsif @format == OBJECT
    MaponClient::Parsers::ObjectParser
  else
    MaponClient::Parsers::EmptyParser
  end
end
set_request_format() click to toggle source
# File lib/mapon_client/client.rb, line 56
def set_request_format
  if @format == STRUCTURE || @format == OBJECT
    @request_format = JSON
  else
    @request_format = @format
  end
end