class Flash::Integration::Connection

Attributes

base_url[R]

Public Class Methods

new(base_url:, request_class: Faraday) click to toggle source
# File lib/flash/integration/connection.rb, line 8
def initialize(base_url:, request_class: Faraday)
  @request_class = request_class
  @base_url = base_url
end

Public Instance Methods

default_headers() click to toggle source
# File lib/flash/integration/connection.rb, line 63
def default_headers
  {}
end
delete(url: "", params: {}, headers: {}, body: {}) click to toggle source
# File lib/flash/integration/connection.rb, line 53
def delete(url: "", params: {}, headers: {}, body: {})
  send_request(
    method: :delete,
    url: url,
    params: params,
    headers: headers,
    body: body
  )
end
get(url: "", params: {}, headers: {}) click to toggle source
# File lib/flash/integration/connection.rb, line 13
def get(url: "", params: {}, headers: {})
  send_request(
    method: :get,
    url: url,
    params: params,
    headers: headers
  )
end
patch(url: "", params: {}, headers: {}, body: {}) click to toggle source
# File lib/flash/integration/connection.rb, line 43
def patch(url: "", params: {}, headers: {}, body: {})
  send_request(
    method: :patch,
    url: url,
    params: params,
    headers: headers,
    body: body
  )
end
post(url: "", params: {}, headers: {}, body: {}, multipart: false) click to toggle source
# File lib/flash/integration/connection.rb, line 22
def post(url: "", params: {}, headers: {}, body: {}, multipart: false)
  send_request(
    method: :post,
    url: url,
    params: params,
    headers: headers,
    body: body,
    multipart: multipart
  )
end
put(url: "", params: {}, headers: {}, body: {}) click to toggle source
# File lib/flash/integration/connection.rb, line 33
def put(url: "", params: {}, headers: {}, body: {})
  send_request(
    method: :put,
    url: url,
    params: params,
    headers: headers,
    body: body
  )
end

Private Instance Methods

build_request(method, url, params, headers, body) click to toggle source
# File lib/flash/integration/connection.rb, line 96
def build_request(method, url, params, headers, body)
  Flash::Integration::Request.new(
    method: method,
    url: url,
    params: params,
    headers: headers,
    body: body,
    time: Time.now.utc
  )
end
build_response(request, status, headers, body) click to toggle source
# File lib/flash/integration/connection.rb, line 107
def build_response(request, status, headers, body)
  Flash::Integration::Response.new(
    request: request,
    status: status,
    headers: headers,
    body: body,
    time: Time.now.utc
  )
end
multipart_connection() click to toggle source
# File lib/flash/integration/connection.rb, line 88
def multipart_connection
  @request_class.new(url: @base_url) do |conn|
    conn.use Flash::Integration::MultipartFlat
    conn.request :url_encoded
    conn.adapter @request_class.default_adapter
  end
end
send_request(method:, url:, params:, headers:, body: nil, multipart: false) click to toggle source
# File lib/flash/integration/connection.rb, line 68
def send_request(method:, url:, params:, headers:, body: nil, multipart: false)
  connection = multipart ? multipart_connection : @request_class.new(url: @base_url)

  merged_headers = default_headers.merge(headers)

  request = build_request(
    method, connection.build_url(url).to_s, params, merged_headers, body
  )

  result =
    connection.send(method) do |request|
      request.url(url)
      request.params = params
      request.headers = merged_headers
      request.body = body if body
    end

  build_response(request, result.status, result.headers, result.body)
end