module Xero::Api::Connection
Constants
- AUTHORIZATION_MIDDLEWARES
Public Class Methods
Public Instance Methods
build_connection(url, headers: nil) { |conn| ... }
click to toggle source
# File lib/xero/api/connection.rb, line 35 def build_connection(url, headers: nil) Faraday.new(url: url) { |conn| conn.response :detailed_logger, Xero::Api.logger, LOG_TAG if Xero::Api.log conn.headers.update(headers) if headers yield conn if block_given? } end
parse_response_body(resp)
click to toggle source
# File lib/xero/api/connection.rb, line 71 def parse_response_body(resp) body = resp.body case resp.headers['Content-Type'] when /json/ then JSON.parse(body) else body end end
raw_request(method, conn:, path:, payload: nil, headers: nil)
click to toggle source
# File lib/xero/api/connection.rb, line 48 def raw_request(method, conn:, path:, payload: nil, headers: nil) conn.public_send(method) do |req| req.headers.update(headers) if headers case method when :get, :delete req.url path when :post, :put req.url path req.body = payload.to_json else raise Xero::Api::Error, "Unhandled request method '#{method.inspect}'" end end end
request(method, path:, entity: nil, payload: nil, headers: nil, parse_entity: false)
click to toggle source
# File lib/xero/api/connection.rb, line 43 def request(method, path:, entity: nil, payload: nil, headers: nil, parse_entity: false) raw_response = raw_request(method, conn: connection, path: path, payload: payload, headers: headers) response(raw_response, entity: entity, parse_entity: parse_entity) end
response(resp, entity: nil, parse_entity: false)
click to toggle source
# File lib/xero/api/connection.rb, line 62 def response(resp, entity: nil, parse_entity: false) data = parse_response_body(resp) parse_entity && entity ? entity_response(data, entity) : data rescue => e msg = "#{LOG_TAG} response parsing error: entity=#{entity.inspect} body=#{resp.body.inspect} exception=#{e.inspect}" Xero::Api.logger.debug { msg } data end
Private Instance Methods
add_connection_adapter(conn)
click to toggle source
# File lib/xero/api/connection.rb, line 91 def add_connection_adapter(conn) conn.adapter Faraday.default_adapter end
add_exception_middleware(conn)
click to toggle source
# File lib/xero/api/connection.rb, line 95 def add_exception_middleware(conn) conn.use Xero::Api::FaradayMiddleware::RaiseHttpException end
entity_response(data, entity)
click to toggle source
# File lib/xero/api/connection.rb, line 81 def entity_response(data, entity) entity_name = entity_handler(entity) entity_body = data entity_body.fetch(entity_name) do msg = "#{LOG_TAG} entity name not in that top-level of the response body: entity_name=#{entity_name}" Xero::Api.logger.debug { msg } data end end