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