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



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
78
79
80
81
82
# File 'lib/saddle/requester.rb', line 47

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?(Integer))
  @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?(Integer)
  @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



116
117
118
119
120
121
122
# File 'lib/saddle/requester.rb', line 116

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



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

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



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

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



106
107
108
109
110
111
112
113
# File 'lib/saddle/requester.rb', line 106

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