lib/duracloud/request.rb in duracloud-client-0.0.3 vs lib/duracloud/request.rb in duracloud-client-0.1.0
- old
+ new
@@ -6,33 +6,45 @@
# @param http_method [Symbol] the lower-case symbol corresponding to HTTP method
# @param url [String] relative or absolute URL
# @param body [String] the body of the request
# @param headers [Hash] HTTP headers
# @param query [Hash] Query string parameters
- def initialize(client, http_method, url, body: nil, headers: nil, query: nil)
+ # def initialize(client, http_method, url, body: nil, headers: nil, query: nil)
+ def initialize(client, http_method, url, **options)
@client = client
@http_method = http_method
@url = url
- @body = body
- @headers = headers
- @query = query
+ set_options(options.dup)
end
def execute
- begin
- original_response = connection.send(http_method,
- url,
- body: body,
- query: query,
- header: headers)
- Response.new(original_response)
- end
+ response_class.new(original_response)
end
private
+ def original_response
+ connection.send(http_method,
+ url,
+ body: body,
+ query: query,
+ header: headers)
+ end
+
+ def set_options(options)
+ @body = options.delete(:body)
+ @headers = options.delete(:headers)
+ query = options.delete(:query) || {}
+ # Treat other keywords args as query params and ignore empty params
+ @query = query.merge(options).reject { |k, v| v.to_s.empty? }
+ end
+
def base_path
'/'
+ end
+
+ def response_class
+ Response
end
def connection
@connection ||= Connection.new(client, base_path)
end