Class: Aviator::Service

Inherits:
Object show all
Defined in:
lib/puppet/feature/aviator/core/service.rb

Defined Under Namespace

Classes: AccessDetailsNotDefinedError, MissingServiceEndpointError, ProviderNotDefinedError, ServiceNameNotDefinedError, SessionDataNotProvidedError, UnknownRequestError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Service

Returns a new instance of Service.



67
68
69
70
71
72
73
74
75
76
# File 'lib/puppet/feature/aviator/core/service.rb', line 67

def initialize(opts={})
  @provider = opts[:provider] || (raise ProviderNotDefinedError.new)
  @service  = opts[:service]  || (raise ServiceNameNotDefinedError.new)
  @log_file = opts[:log_file]
  @default_options = opts[:default_options] || {}

  @default_session_data = opts[:default_session_data]

  load_requests
end

Instance Attribute Details

#default_session_dataObject

Returns the value of attribute default_session_data.



61
62
63
# File 'lib/puppet/feature/aviator/core/service.rb', line 61

def default_session_data
  @default_session_data
end

#providerObject (readonly)

Returns the value of attribute provider.



63
64
65
# File 'lib/puppet/feature/aviator/core/service.rb', line 63

def provider
  @provider
end

#serviceObject (readonly)

Returns the value of attribute service.



63
64
65
# File 'lib/puppet/feature/aviator/core/service.rb', line 63

def service
  @service
end

Instance Method Details

#request(request_name, options = {}, &params) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/puppet/feature/aviator/core/service.rb', line 79

def request(request_name, options={}, &params)
  if options[:api_version].nil? && @default_options[:api_version]
    options[:api_version] = @default_options[:api_version]
  end

  session_data = options[:session_data] || default_session_data

  raise SessionDataNotProvidedError.new(@service, request_name) unless session_data

  [:base_url].each do |k|
    session_data[k] = options[k] if options[k]
  end

  request_class = provider_module.find_request(service, request_name, session_data, options)

  raise UnknownRequestError.new(request_name, options) unless request_class

  request  = request_class.new(session_data, &params)

  response = http_connection.send(request.http_method) do |r|
    r.url        request.url
    r.headers.merge!(request.headers)        if request.headers?
    r.query    = request.querystring         if request.querystring?
    r.body     = JSON.generate(request.body) if request.body?
  end

  Aviator::Response.send(:new, response, request)
end

#request_classesObject



109
110
111
# File 'lib/puppet/feature/aviator/core/service.rb', line 109

def request_classes
  @request_classes
end