Class: BungieClient::Wrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/bungie_client/wrapper.rb

Overview

Wrapper class for simple api requests

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Wrapper

Initialize wrapper with client

This initializer create wrapper object with client. If you ‘options` contain `:client` key, it will be taken as client object [BungieClient::Client]. Otherwise it will be passed in client initializer.

See Also:



12
13
14
15
16
17
18
# File 'lib/bungie_client/wrapper.rb', line 12

def initialize(options = {})
  if options[:client].nil?
    @options = options
  elsif options[:client].is_a? BungieClient::Client
    @client = options[:client]
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(*args) ⇒ Object



60
61
62
# File 'lib/bungie_client/wrapper.rb', line 60

def method_missing(*args)
  call_service args[0].to_s, args[1] || {}, args[2] || {}
end

Instance Method Details

#call_service(service, params = {}, options = {}) ⇒ Hashie::Mash

Call needed service from services list



50
51
52
53
54
55
56
57
58
# File 'lib/bungie_client/wrapper.rb', line 50

def call_service(service, params = {}, options = {})
  service = BungieClient::Service.new service rescue raise NoMethodError

  # change url
  url = self.fill_url service.endpoint, params

  # send request
  client.send service.type, url, options
end

#clientBungieClient::Client

Get wrapper client



23
24
25
26
27
# File 'lib/bungie_client/wrapper.rb', line 23

def client
  return @client unless @client.nil?

  @client = BungieClient::Client.new @options
end

#fill_url(url, params) ⇒ String

Change all url parameters to hash value



35
36
37
38
39
40
41
# File 'lib/bungie_client/wrapper.rb', line 35

def fill_url(url, params)
  params.each do |key, value|
    url = url.gsub "{#{key}}", value.to_s
  end

  url
end