lib/domoscio_rails.rb in domoscio_rails-0.3.2 vs lib/domoscio_rails.rb in domoscio_rails-0.3.3
- old
+ new
@@ -101,19 +101,18 @@
#
# Raises DomoscioRails::ResponseError if response code != 200.
#
def self.request(method, url, params={}, filters={}, headers = request_headers, before_request_proc = nil)
return false if @disabled
+ #sets a default page size of 50
+ params.merge!({'per_page': 50}) unless params['per_page']
uri = api_uri(url)
uri.query = URI.encode_www_form(filters) unless filters.empty?
res = DomoscioRails.send_request(uri, method, params, headers, before_request_proc)
return res if res.kind_of? DomoscioRails::ProcessingError
begin
- unless res.kind_of? Net::HTTPSuccess
- data = DomoscioRails::JSON.load((res.body.nil? ? '' : res.body), :symbolize_keys => true)
- raise ResponseError.new(uri, res.code.to_i, data, res.body, params)
- end
+ raise_http_failure(uri, res, params)
data = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
DomoscioRails::AuthorizationToken::Manager.storage.store({access_token: res['Accesstoken'], refresh_token: res['Refreshtoken']})
rescue MultiJson::LoadError => exception
data = ProcessingError.new(uri, 500, exception, res.body, params)
rescue ResponseError => exception
@@ -124,14 +123,11 @@
pagetotal = (res['Total'].to_i / res['Per-Page'].to_f).ceil
for j in 2..pagetotal
res = DomoscioRails.send_request(uri, method, params.merge({page: j}), headers, before_request_proc)
return res if res.kind_of? DomoscioRails::ProcessingError
begin
- unless res.kind_of? Net::HTTPSuccess
- body = DomoscioRails::JSON.load((res.body.nil? ? '' : res.body), :symbolize_keys => true)
- raise ResponseError.new(uri, res.code.to_i, body, res.body, params)
- end
+ raise_http_failure(uri, res, params)
body = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
data += body
data.flatten!
rescue MultiJson::LoadError => exception
return ProcessingError.new(uri, 500, exception, res.body, params)
@@ -150,16 +146,27 @@
req.body = DomoscioRails::JSON.dump(params)
before_request_proc.call(req) if before_request_proc
http.request req
end
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => exception
- ProcessingError.new(uri, 500, exception, res.body)
+ ProcessingError.new(uri, 500, exception, res)
end
end
private
+ def self.raise_http_failure(uri, res, params)
+ unless res.kind_of? Net::HTTPSuccess
+ if res.blank?
+ raise ResponseError.new(uri, 500, {error: {status: 500, message: 'AdaptiveEngine not available'}}, {}, params)
+ else
+ body = DomoscioRails::JSON.load((res.body.nil? ? '' : res.body), :symbolize_keys => true)
+ raise ResponseError.new(uri, res.code.to_i, body, res.body, params)
+ end
+ end
+ end
+
def self.user_agent
@uname ||= get_uname
{
bindings_version: DomoscioRails::VERSION,
lang: 'ruby',
@@ -175,10 +182,9 @@
'uname lookup failed'
end
def self.request_headers
auth_token = DomoscioRails::AuthorizationToken::Manager.get_token
-
if !auth_token.is_a? String
headers = {
'user_agent' => "#{DomoscioRails.user_agent}",
'AccessToken' => "#{auth_token[:access_token]}",
'RefreshToken' => "#{auth_token[:refresh_token]}",
\ No newline at end of file