Class: Aviator::Service

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

Overview

Manages a service

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.



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

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.



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

def default_session_data
  @default_session_data
end

#providerObject (readonly)

Returns the value of attribute provider.



65
66
67
# File 'lib/puppet/feature/aviator/core/service.rb', line 65

def provider
  @provider
end

#serviceObject (readonly)

Returns the value of attribute service.



65
66
67
# File 'lib/puppet/feature/aviator/core/service.rb', line 65

def service
  @service
end

Instance Method Details

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

No longer recommended for public use. Use Aviator::Session#request instead



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/puppet/feature/aviator/core/service.rb', line 83

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

  # Always use :params over &params if provided
  if options[:params]
    params = lambda do |params|
      options[:params].each do |key, value|
        begin
          params[key] = value
        rescue NameError => e
          raise NameError.new("Unknown param name '#{key}'")
        end
      end
    end
  end

  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



126
127
128
# File 'lib/puppet/feature/aviator/core/service.rb', line 126

def request_classes
  @request_classes
end