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



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
77
# File 'lib/saddle/requester.rb', line 42

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



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

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

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

Make a GET request



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

def get(url, params={}, options={})
  response = connection.get do |req|
    req.saddle_options = options
    req.body = options[:body] if options.has_key?(:body)
    req.url(url, params)
  end
  handle_response(response)
end

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

Make a POST request



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

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

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

Make a PUT request



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

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