Class: SimpleHttpService::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_http_service/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Client

Returns a new instance of Client.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/simple_http_service/client.rb', line 9

def initialize(opts)
  raise 'URL must be present' unless opts[:url]
  raise 'http_method must be present' unless opts[:http_method]

  @uri = URI(opts[:url])
  @http_method = opts[:http_method]
  @headers = opts[:headers] || {}
  @request_body = opts[:request_body]
  @open_timeout = opts[:open_timeout]
  @read_timeout = opts[:read_timeout]
  @write_timeout = opts[:write_timeout]
  @max_retries = opts[:max_retries] || 1
  @additional_headers = opts[:additional_headers] || {}
  @rate_limit = opts[:rate_limit] || {}
end

Instance Attribute Details

#additional_headersObject

Returns the value of attribute additional_headers.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def additional_headers
  @additional_headers
end

#headersObject

Returns the value of attribute headers.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def headers
  @headers
end

#http_methodObject

Returns the value of attribute http_method.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def http_method
  @http_method
end

#max_retriesObject

Returns the value of attribute max_retries.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def max_retries
  @max_retries
end

#open_timeoutObject

Returns the value of attribute open_timeout.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def open_timeout
  @open_timeout
end

#rate_limitObject

Returns the value of attribute rate_limit.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def rate_limit
  @rate_limit
end

#read_timeoutObject

Returns the value of attribute read_timeout.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def read_timeout
  @read_timeout
end

#request_bodyObject

Returns the value of attribute request_body.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def request_body
  @request_body
end

#uriObject

Returns the value of attribute uri.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def uri
  @uri
end

#write_timeoutObject

Returns the value of attribute write_timeout.



6
7
8
# File 'lib/simple_http_service/client.rb', line 6

def write_timeout
  @write_timeout
end

Instance Method Details

#callObject



25
26
27
28
29
30
31
32
# File 'lib/simple_http_service/client.rb', line 25

def call
  throttle
  enable_ssl
  set_headers
  set_timeout
  set_request_params
  http.request(request)
end

#rate_limiterObject

Limiter backing this client, or nil unless rate_limit was passed in.



35
36
37
38
39
40
41
42
43
# File 'lib/simple_http_service/client.rb', line 35

def rate_limiter
  return unless rate_limit[:limit]

  @rate_limiter ||= RateLimiter.for(
    rate_limit[:key] || "#{uri.scheme}://#{uri.host}:#{uri.port}",
    limit: rate_limit[:limit],
    interval: rate_limit[:interval] || RateLimiter::DEFAULT_INTERVAL
  )
end