lib/oanda_api/client/client.rb in oanda_api-0.9.5 vs lib/oanda_api/client/client.rb in oanda_api-0.9.6

- old
+ new

@@ -114,13 +114,13 @@ Client.send method, api_uri(resource_descriptor), params_key => Utils.stringify_keys(conditions.merge(default_params)), :headers => OandaAPI.configuration.headers.merge(headers), :open_timeout => OandaAPI.configuration.open_timeout, - :read_timeout => OandaAPI.configuration.read_timeout + :read_timeout => OandaAPI.configuration.read_timeout, + :timeout => OandaAPI.configuration.open_timeout end - handle_response response, resource_descriptor rescue Http::Exceptions::HttpException => e raise OandaAPI::RequestError, e.message end @@ -157,14 +157,19 @@ # {OandaAPI::Configuration#max_requests_per_second}. Only enforced # if {OandaAPI::Configuration#use_request_throttling?} is enabled. # # @return [void] def self.throttle_request_rate + last_request_time = last_request_at now = Time.now - delta = now - (last_request_at || now) - _throttle(delta, now) if delta < OandaAPI.configuration.min_request_interval && - OandaAPI.configuration.use_request_throttling? + + if last_request_time + delta = now - last_request_time + _throttle(delta, now) if delta < OandaAPI.configuration.min_request_interval && + OandaAPI.configuration.use_request_throttling? + end + self.last_request_at = Time.now end # @private # The local time of the most recently throttled request. @@ -203,12 +208,13 @@ # @param [OandaAPI::Client::ResourceDescriptor] resource_descriptor metadata # describing the requested resource. # @return [OandaAPI::ResourceBase, OandaAPI::ResourceCollection] see {#execute_request} def handle_response(response, resource_descriptor) if resource_descriptor.is_collection? - ResourceCollection.new response, resource_descriptor + location = response.respond_to?(:location) ? response.location : nil + ResourceCollection.new response.parsed_response, resource_descriptor, location: location else - resource_descriptor.resource_klass.new response + resource_descriptor.resource_klass.new response.parsed_response end end # @private # Enables method-chaining.