Class: Nucleo::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/nucleo/client.rb,
lib/nucleo/client/version.rb

Constant Summary collapse

VERSION =
"0.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationNucleo::Configuration

Create a default configuration to use



38
39
40
# File 'lib/nucleo/client.rb', line 38

def configuration
  @configuration
end

.routesObject

Define the API routes. This will return a collection of available routes.



143
144
145
# File 'lib/nucleo/client.rb', line 143

def routes
  @routes
end

Class Method Details

.api_hostString

Helper method to return the API host

Returns:

  • (String)

    API Base URL



168
169
170
# File 'lib/nucleo/client.rb', line 168

def self.api_host
  self.configuration.api_host
end

.configure {|self.configuration| ... } ⇒ Nucleo::Configuration

Specify configuration options. This will be applied to our memoized Configuration.

Yields:

Returns:



46
47
48
# File 'lib/nucleo/client.rb', line 46

def self.configure
  yield(self.configuration)
end

.connectionNucleo::Connection

Helper method to access the Connection object

Returns:



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/nucleo/client.rb', line 53

def self.connection
  @connection ||= Nucleo::Connection.new(url: self.configuration.api_host) do |builder|
    builder.use(:gzip)

    builder.response(:json, content_type: /\bjson$/)

    builder.response(:logger, self.configuration.request_logger)
    builder.response(:detailed_logger, self.configuration.detailed_logger)

    builder.request(:retry, max: 10, interval: 1, interval_randomness: 0.5, backoff_factor: 2)

    builder.options[:timeout] = 600

    builder.adapter(Nucleo::Connection.default_adapter)
  end

  # Inject the Authorization via the API key
  @connection.headers['x-api-key'] = self.configuration.access_token

  # Merge in the default headers
  @connection.headers.merge!(self.configuration.connection_options[:headers])

  @connection
end

.delete(url, data = {}, headers = {}) ⇒ Nucleo::Response

Helper method to perform an DELETE request

Returns:



135
136
137
138
139
# File 'lib/nucleo/client.rb', line 135

def self.delete(url, data={}, headers={})
  request = self.connection.delete(url, data, headers)

  Nucleo::Response.new(request)
end

.get(url, data = {}, headers = {}) ⇒ Nucleo::Response

Helper method to perform a GET request

Returns:



81
82
83
84
85
# File 'lib/nucleo/client.rb', line 81

def self.get(url, data={}, headers={})
  request = self.connection.get(url, data, headers)

  Nucleo::Response.new(request)
end

.head(url, data = {}, headers = {}) ⇒ Nucleo::Response

Helper method to perform a HEAD request

Returns:



90
91
92
93
94
# File 'lib/nucleo/client.rb', line 90

def self.head(url, data={}, headers={})
  request = self.connection.head(url, data, headers)

  Nucleo::Response.new(request)
end

.options(url, headers = {}) ⇒ Nucleo::Response

Helper method to perform an OPTIONS request

Returns:



99
100
101
102
103
# File 'lib/nucleo/client.rb', line 99

def self.options(url, headers={})
  request = self.connection.http_options(url, nil, headers)

  Nucleo::Response.new(request)
end

.patch(url, data = {}, headers = {}) ⇒ Nucleo::Response

Helper method to perform an PATCh request

Returns:



126
127
128
129
130
# File 'lib/nucleo/client.rb', line 126

def self.patch(url, data={}, headers={})
  request = self.connection.patch(url, data, headers)

  Nucleo::Response.new(request)
end

.post(url, data = {}, headers = {}) ⇒ Nucleo::Response

Helper method to perform an POST request

Returns:



108
109
110
111
112
# File 'lib/nucleo/client.rb', line 108

def self.post(url, data={}, headers={})
  request = self.connection.post(url, data, headers)

  Nucleo::Response.new(request)
end

.put(url, data = {}, headers = {}) ⇒ Nucleo::Response

Helper method to perform an PUT request

Returns:



117
118
119
120
121
# File 'lib/nucleo/client.rb', line 117

def self.put(url, data={}, headers={})
  request = self.connection.put(url, data, headers)

  Nucleo::Response.new(request)
end