Class: Saddle::Requester

Inherits:
Object
  • Object
show all
Defined in:
lib/saddle/requester.rb

Constant Summary collapse

VALID_BODY_STYLES =
[:json, :urlencoded]

Instance Method Summary collapse

Constructor Details

#initialize(parent_client, opt = {}) ⇒ Requester

Available options host - host to connect to (default: localhost) port - port to connect on use_ssl - true if we should use https (default: false) request_style - :json or :urlencoded (default: :json) num_retries - number of times to retry each request (default: 3) timeout - timeout in seconds additional_middleware - an Array of more middlewares to apply to the top of the stack

- each middleware consists of hash of klass, and optionally args (an array)

stubs - test stubs for specs



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/saddle/requester.rb', line 40

def initialize(parent_client, opt={})
  # We may want properties about the parent client in middlewares
  @parent_client = parent_client
  # Store the options for later use
  @options = opt
  @host = opt[:host] || 'localhost'
  raise ':host must be a string' unless @host.is_a?(String)
  @port = opt[:port]
  raise ':port must be nil or an integer' unless (@port.nil? || @port.is_a?(Fixnum))
  @use_ssl = opt[:use_ssl] || false
  raise ':use_ssl must be true or false' unless (@use_ssl.is_a?(TrueClass) || @use_ssl.is_a?(FalseClass))
  @request_style = opt[:request_style] || :json
  raise ":request_style must be in: #{VALID_BODY_STYLES.join(',')}" unless VALID_BODY_STYLES.include?(@request_style)
  @num_retries = opt[:num_retries] || 3
  raise ':num_retries must be an integer' unless @num_retries.is_a?(Fixnum)
  @timeout = opt[:timeout]
  raise ':timeout must be nil or an integer' unless (@timeout.nil? || @timeout.is_a?(Numeric))
  @additional_middlewares = opt[:additional_middlewares] || []
  raise ':additional_middleware must be an Array' unless @additional_middlewares.is_a?(Array)
  raise 'invalid middleware found' unless @additional_middlewares.all? { |m| m[:klass] < Faraday::Middleware }
  raise 'middleware arguments must be an array' unless @additional_middlewares.all? { |m| m[:args].nil? || m[:args].is_a?(Array) }
  @http_adapter = opt[:http_adapter] || :net_http
  raise ':http_adapter must be a symbol' unless @http_adapter.is_a?(Symbol)
  @stubs = opt[:stubs] || nil
  unless @stubs.nil?
    raise ':stubs must be a Faraday::Adapter::Test::Stubs' unless @stubs.is_a?(Faraday::Adapter::Test::Stubs)
  end
end

Instance Method Details

#delete(url, params = {}, options = {}) ⇒ Object

Make a DELETE request



100
101
102
103
104
105
106
# File 'lib/saddle/requester.rb', line 100

def delete(url, params={}, options={})
  response = connection.delete do |req|
    req.options.deep_merge!(options)
    req.url(url, params)
  end
  response.body
end

#get(url, params = {}, options = {}) ⇒ Object

Make a GET request



71
72
73
74
75
76
77
# File 'lib/saddle/requester.rb', line 71

def get(url, params={}, options={})
  response = connection.get do |req|
    req.options.deep_merge!(options)
    req.url(url, params)
  end
  response.body
end

#post(url, data = {}, options = {}) ⇒ Object

Make a POST request



80
81
82
83
84
85
86
87
# File 'lib/saddle/requester.rb', line 80

def post(url, data={}, options={})
  response = connection.post do |req|
    req.options.deep_merge!(options)
    req.url(url)
    req.body = data
  end
  response.body
end

#put(url, data = {}, options = {}) ⇒ Object

Make a PUT request



90
91
92
93
94
95
96
97
# File 'lib/saddle/requester.rb', line 90

def put(url, data={}, options={})
  response = connection.put do |req|
    req.options.deep_merge!(options)
    req.url(url)
    req.body = data
  end
  response.body
end