Class: AkamaiCCU::Wrapper

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

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(endpoint:, headers: [], signer_klass: Signer, response_klass: Response) ⇒ Wrapper

Returns a new instance of Wrapper.



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

def initialize(endpoint:, headers: [], signer_klass: Signer, response_klass: Response)
  @endpoint = endpoint
  @signer_klass = signer_klass
  @response_klass = response_klass
  @headers = headers
end

Class Attribute Details

.clientObject (readonly)

Returns the value of attribute client.



10
11
12
# File 'lib/akamai_ccu/wrapper.rb', line 10

def client
  @client
end

.loggerObject

Returns the value of attribute logger.



11
12
13
# File 'lib/akamai_ccu/wrapper.rb', line 11

def logger
  @logger
end

.secretObject (readonly)

Returns the value of attribute secret.



10
11
12
# File 'lib/akamai_ccu/wrapper.rb', line 10

def secret
  @secret
end

Instance Attribute Details

#response_klassObject

Returns the value of attribute response_klass.



33
34
35
# File 'lib/akamai_ccu/wrapper.rb', line 33

def response_klass
  @response_klass
end

#signer_klassObject

Returns the value of attribute signer_klass.



33
34
35
# File 'lib/akamai_ccu/wrapper.rb', line 33

def signer_klass
  @signer_klass
end

Class Method Details

.setup(secret, client_klass = Client, logger = Logger.new(nil)) ⇒ Object



13
14
15
16
17
# File 'lib/akamai_ccu/wrapper.rb', line 13

def setup(secret, client_klass = Client, logger = Logger.new(nil))
  @secret ||= secret
  @client ||= client_klass.new(host: @secret.host)
  @logger ||= logger
end

Instance Method Details

#call(objects) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/akamai_ccu/wrapper.rb', line 42

def call(objects)
  response = self.class.client.call(path: @endpoint.path) do |request|
    request.body = { objects: objects }.to_json
    @signer_klass.new(request, self.class.secret.touch, @headers).call!
    self.class.logger.debug { "request: uri=#{request.path}; body=#{request.body}; authorization=#{request["Authorization"]}" }
  end
  self.class.logger.info { "response: inspect=#{response.inspect}; body=#{response.body}" }
  response_klass.new(response.body)
end