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



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
68
69
70
71
72
73
74
75
76
# File 'lib/saddle/requester.rb', line 41

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))
  @extra_env = opt[:extra_env] || {}
  raise 'extra_env must be a Hash' unless @extra_env.is_a?(Hash)
  @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 or a hash' unless @http_adapter.is_a?(Symbol) || @http_adapter.is_a?(Hash)
  @http_adapter = { :key => @http_adapter } if @http_adapter.is_a?(Symbol)
  raise 'adapter key must be a symbol' unless @http_adapter[:key].is_a?(Symbol)
  raise 'adapter arguments must be an array' unless @http_adapter[:args].nil? || @http_adapter[: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
  @return_full_response = opt[:return_full_response] || false
end

Instance Method Details

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

Make a DELETE request



109
110
111
112
113
114
115
# File 'lib/saddle/requester.rb', line 109

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

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

Make a GET request



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

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

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

Make a POST request



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

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

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

Make a PUT request



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

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