Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions lib/beyond_api/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,39 +8,46 @@ module Connection
def get(path, params = {})
parsed_response agent.get(path, params)
end

def post(path, body = {}, params = {})
response = agent.post(path, body) do |request|
request.params = params
end
parsed_response(response)
response = agent.post(path, body) do |request|
request.params = params
end
parsed_response(response)
end

def delete(path, params = {})
parsed_response agent.delete(path, params)
end

private

def parsed_response(response)
Response.new(response).handle
end

def parsed_body(body)
Utils.camelize_keys(body)
end

def agent
@agent ||= Faraday.new(url: @session.api_url, ssl: { verify: true }) do |faraday|
# Timeouts
faraday.options.timeout = BeyondApi.configuration.timeout.to_i
faraday.options.open_timeout = BeyondApi.configuration.open_timeout.to_i

# Authorization
if @oauth.blank? # @session && @session.access_token.present?
faraday.request :authorization, "Bearer", @session.access_token
else
case @authorization
when :basic
faraday.request :authorization, :basic, BeyondApi.configuration.client_id, BeyondApi.configuration.client_secret
when :bearer
faraday.request :authorization, "Bearer", @session.access_token
end

# Headers
faraday.headers["Accept"] = "application/json" # Set default accept header
faraday.headers["Content-Type"] = "application/json" # Set default content type

# Request options
faraday.request :json # Encode request bodies as JSON
faraday.request :retry, BeyondApi.configuration.retry_options

# Response options
faraday.response :json, content_type: "application/json"
faraday.response :logger, *logger_config { |logger| apply_filters(logger) }
Expand Down
1 change: 1 addition & 0 deletions lib/beyond_api/response.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ def handle

private

# TODO: benchmark this !
def parsed_response
return {} if body.blank?

Expand Down
22 changes: 14 additions & 8 deletions lib/beyond_api/services/authentication/token.rb
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
module BeyondApi
module Authentication
class Token < BaseService
def refresh(refresh_token)
handle_token_call("refresh_token", refresh_token:)
class Token
include Connection # @session, @authorization

def initialize(session = nil)
@session = session
@authorization = :basic
end

def handle_token_call(grant_type, params = {})
path = "oauth/token"
@oauth = true
def refresh(refresh_token)
post("oauth/token", {}, { grant_type: "refresh_token", refresh_token: })
end

params.merge!(grant_type:)
def get(code)
post("oauth/token", {}, { grant_type: "authorization_code" , code: })
end

post(path, {}, params)
def client_credentials
post("oauth/token", {}, { grant_type: "client_credentials" })
end
end
end
Expand Down
17 changes: 13 additions & 4 deletions lib/beyond_api/services/base_service.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
module BeyondApi
class BaseService
attr_reader :session
include Connection # @session, @authorization

include Connection # @session
ServiceSession = Struct.new(:api_url, :access_token, :refresh_token)

def initialize(session = nil)
@session = session
def initialize(**params)
@session = initialize_session(params)
@authorization = :bearer
end

def fetch_all_pages(url, resource, params = {})
Expand All @@ -20,6 +21,14 @@ def fetch_all_pages(url, resource, params = {})

private

def initialize_session(session)
ServiceSession.new(
session[:api_url],
session[:access_token],
session[:refresh_token]
)
end

def adjust_response(result)
result[:page][:size] = result[:page][:total_elements]
result[:page][:total_pages] = 1
Expand Down
2 changes: 1 addition & 1 deletion lib/beyond_api/services/storefront/script_tag.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def create(script_url)
post("script-tags", script_url:)
end

def delete(id)
def destroy(id)
delete("script-tags/#{id}")
end
end
Expand Down
48 changes: 0 additions & 48 deletions lib/beyond_api/session.rb

This file was deleted.