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



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

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) }
  @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



95
96
97
98
99
100
101
# File 'lib/saddle/requester.rb', line 95

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

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

Make a GET request



66
67
68
69
70
71
72
# File 'lib/saddle/requester.rb', line 66

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

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

Make a POST request



75
76
77
78
79
80
81
82
# File 'lib/saddle/requester.rb', line 75

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

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

Make a PUT request



85
86
87
88
89
90
91
92
# File 'lib/saddle/requester.rb', line 85

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