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(opt = {}) ⇒ Requester

Available options host - host to connect to (default: localhost) port - port to connect on (default: 80) 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



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/saddle/requester.rb', line 32

def initialize(opt={})
  @host = opt[:host] || 'localhost'
  raise ':host must be a string' unless @host.is_a?(String)
  @port = opt[:port] || 80
  raise ':port must be an integer' unless @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]
  unless @timeout.nil?
    raise ':timeout must be a number or nil' unless @timeout.is_a?(Numeric)
  end
  @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



88
89
90
91
92
93
94
# File 'lib/saddle/requester.rb', line 88

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



59
60
61
62
63
64
65
# File 'lib/saddle/requester.rb', line 59

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



68
69
70
71
72
73
74
75
# File 'lib/saddle/requester.rb', line 68

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



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

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