Module: QboApi::Connection
- Included in:
- QboApi
- Defined in:
- lib/qbo_api/connection.rb
Instance Method Summary collapse
- #authorized_json_connection(url, headers: nil) ⇒ Object
- #authorized_multipart_connection(url) ⇒ Object
- #build_connection(url, headers: nil) ⇒ Object
- #raw_request(method, conn:, path:, payload: nil, params: nil, headers: nil) ⇒ Object
- #request(method, path:, entity: nil, payload: nil, params: nil, headers: nil) ⇒ Object
- #response(resp, entity: nil) ⇒ Object
Instance Method Details
#authorized_json_connection(url, headers: nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/qbo_api/connection.rb', line 9 def (url, headers: nil) headers ||= {} headers['Accept'] ||= 'application/json' headers['Content-Type'] ||= 'application/json;charset=UTF-8' build_connection(url, headers: headers) do |conn| conn.response :json (conn) conn.request :url_encoded add_exception_middleware(conn) add_connection_adapter(conn) end end |
#authorized_multipart_connection(url) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/qbo_api/connection.rb', line 22 def (url) headers = { 'Content-Type' => 'multipart/form-data', 'Accept' => 'application/json' } build_connection(url, headers: headers) do |conn| conn.response :json (conn) add_exception_middleware(conn) conn.request :multipart add_connection_adapter(conn) end end |
#build_connection(url, headers: nil) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/qbo_api/connection.rb', line 36 def build_connection(url, headers: nil) Faraday.new(url: url) { |conn| conn.response :detailed_logger, QboApi.logger, LOG_TAG if QboApi.log conn.headers.update(headers) if headers yield conn if block_given? } end |
#raw_request(method, conn:, path:, payload: nil, params: nil, headers: nil) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/qbo_api/connection.rb', line 49 def raw_request(method, conn:, path:, payload: nil, params: nil, headers: nil) path = finalize_path(path, method: method, params: params) conn.public_send(method) do |req| req.headers = headers if headers case method when :get, :delete req.url path when :post, :put req.url path req.body = payload.to_json else raise ArgumentError, "Unhandled request method '#{method.inspect}'" end end end |
#request(method, path:, entity: nil, payload: nil, params: nil, headers: nil) ⇒ Object
44 45 46 47 |
# File 'lib/qbo_api/connection.rb', line 44 def request(method, path:, entity: nil, payload: nil, params: nil, headers: nil) raw_response = raw_request(method, conn: connection, path: path, params: params, payload: payload, headers: headers) response(raw_response, entity: entity) end |
#response(resp, entity: nil) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/qbo_api/connection.rb', line 66 def response(resp, entity: nil) data = resp.body entity ? entity_response(data, entity) : data rescue => e QboApi.logger.debug { "#{LOG_TAG} response parsing error: entity=#{entity.inspect} body=#{resp.body.inspect} exception=#{e.inspect}" } data end |