class LessonlyApi::Utils::Client
Constants
- ERRORS_MAPPING
Attributes
api_key[R]
domain[R]
logger[R]
root_url[R]
Public Class Methods
instance()
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 33 def self.instance @instance ||= new(LessonlyApi.configuration) end
new(configuration)
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 26 def initialize(configuration) @root_url = configuration.root_url @domain = configuration.domain @api_key = configuration.api_key @logger = configuration.logger end
Public Instance Methods
send_delete(endpoint, params = {})
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 49 def send_delete(endpoint, params = {}) send_request(:delete, endpoint, params) end
send_get(endpoint, params = {})
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 37 def send_get(endpoint, params = {}) send_request(:get, endpoint, params) end
send_post(endpoint, params = {})
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 41 def send_post(endpoint, params = {}) send_request(:post, endpoint, params) end
send_put(endpoint, params = {})
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 45 def send_put(endpoint, params = {}) send_request(:put, endpoint, params) end
Private Instance Methods
assign_params(request, method:, params:)
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 94 def assign_params(request, method:, params:) if method == :get request.params = params else request.body = params.to_json end end
auth_token()
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 74 def auth_token Base64.strict_encode64("#{domain}:#{api_key}") end
connection()
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 55 def connection Faraday.new(root_url, http_options) do |faraday| faraday.request :url_encoded faraday.response :logger, logger, headers: true, bodies: true faraday.adapter :httpclient end end
http_options()
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 64 def http_options { headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'Authorization' => auth_token } } end
parse_json(data)
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 123 def parse_json(data) JSON.parse(data) rescue JSON::ParserError => e raise LessonlyApi::Errors::InvalidJson, e.message end
process_response(response)
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 102 def process_response(response) return process_success(response) if response.status >= 200 && response.status < 300 error = ERRORS_MAPPING[response.status] || LessonlyApi::Errors::ApiError raise(error, parse_json(response.body)) end
process_success(response)
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 109 def process_success(response) return {} if response.body.empty? parse_json(response.body) end
send_request(method, endpoint, params)
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 78 def send_request(method, endpoint, params) response = with_tag do connection.public_send(method) do |request| # TODO: i.kamenko refactor it request.url "/api/v1.1/#{endpoint}" assign_params(request, method: method, params: params) end end process_response(response) rescue Faraday::TimeoutError => e raise LessonlyApi::Errors::ApiTimeoutError, e.message rescue Faraday::Error => e raise LessonlyApi::Errors::Base, e.message end
with_tag() { || ... }
click to toggle source
# File lib/lessonly_api/utils/client.rb, line 115 def with_tag if logger&.respond_to?(:tagged) logger.tagged('LESSONLY API') { yield } else yield end end