Class: BungieClient::Wrappers::Default

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

Direct Known Subclasses

User

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Default

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.

Parameters:

  • client (BungieClient::Client)

    initialized for wrapper

  • options (Hash) (defaults to: {})

    for initialization of client

See Also:



13
14
15
16
17
18
19
# File 'lib/bungie_client/wrappers/default.rb', line 13

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



61
62
63
# File 'lib/bungie_client/wrappers/default.rb', line 61

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

Parameters:

  • service (String)

    name in snake case

  • params (Hash) (defaults to: {})

    service parameters

  • options (Hash) (defaults to: {})

    for client request (get/post)

Returns:

  • (Hashie::Mash)


51
52
53
54
55
56
57
58
59
# File 'lib/bungie_client/wrappers/default.rb', line 51

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



24
25
26
27
28
# File 'lib/bungie_client/wrappers/default.rb', line 24

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

Parameters:

Returns:



36
37
38
39
40
41
42
# File 'lib/bungie_client/wrappers/default.rb', line 36

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

  url
end