class Trusona::Services::BaseService
The starting point for building other services that interact with the Trusona
API
Attributes
resource_path[RW]
Public Class Methods
new(client: Trusona::Api::HTTPClient.new, mapper: Trusona::Mappers::BaseMapper.new)
click to toggle source
# File lib/trusona/services/base_service.rb, line 11 def initialize(client: Trusona::Api::HTTPClient.new, mapper: Trusona::Mappers::BaseMapper.new) @client = client @mapper = mapper @resource_path = '/base-service' end
Public Instance Methods
collection_path()
click to toggle source
# File lib/trusona/services/base_service.rb, line 46 def collection_path @resource_path end
create(resource)
click to toggle source
# File lib/trusona/services/base_service.rb, line 28 def create(resource) raise Trusona::InvalidResourceError unless resource.valid? handle(@client.post(collection_path, resource.to_json), resource) end
delete(resource)
click to toggle source
# File lib/trusona/services/base_service.rb, line 40 def delete(resource) raise Trusona::InvalidResourceError unless resource.id handle(@client.delete(member_path(resource)), resource) end
get(resource)
click to toggle source
# File lib/trusona/services/base_service.rb, line 22 def get(resource) raise Trusona::InvalidResourceError unless resource.id handle(@client.get(member_path(resource)), resource) end
index()
click to toggle source
# File lib/trusona/services/base_service.rb, line 18 def index handle(@client.get(collection_path)) end
member_path(resource)
click to toggle source
# File lib/trusona/services/base_service.rb, line 50 def member_path(resource) [collection_path, resource.id].join('/') end
update(resource)
click to toggle source
# File lib/trusona/services/base_service.rb, line 34 def update(resource) raise Trusona::InvalidResourceError unless resource.id handle(@client.patch(member_path(resource), resource.to_json), resource) end
Private Instance Methods
bad_request()
click to toggle source
# File lib/trusona/services/base_service.rb, line 94 def bad_request raise Trusona::BadRequestError, readable_error end
failed_dependency()
click to toggle source
# File lib/trusona/services/base_service.rb, line 102 def failed_dependency raise Trusona::FailedDependencyError, readable_error end
handle(response, resource = {})
click to toggle source
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/CyclomaticComplexity
# File lib/trusona/services/base_service.rb, line 62 def handle(response, resource = {}) @response = response raise if resource.nil? case response.code when 200..299 success(response, resource) when 400 bad_request when 404 not_found when 403 unauthorized when 422 unprocessable_entity when 424 failed_dependency when 500..599 server_error else raise Trusona::RequestError, readable_error end end
not_found()
click to toggle source
# File lib/trusona/services/base_service.rb, line 106 def not_found raise Trusona::ResourceNotFoundError, readable_error end
readable_error()
click to toggle source
# File lib/trusona/services/base_service.rb, line 118 def readable_error default = '[UNKNOWN] Error - An unknown error has occurred.' return default unless @response body = @response.to_h msg = [] msg << "[#{body['error']}] #{body['message']} - #{body['description']}" return msg.join("\n") unless body['field_errors'] body['field_errors'].each do |field| msg << "\t #{field.join(' => ')}" end msg.join("\n") end
server_error()
click to toggle source
# File lib/trusona/services/base_service.rb, line 114 def server_error raise Trusona::ApiError end
success(response, resource)
click to toggle source
rubocop:enable Metrics/MethodLength rubocop:enable Metrics/CyclomaticComplexity
# File lib/trusona/services/base_service.rb, line 89 def success(response, resource) verify_response(response) @mapper.map(response, resource) end
unprocessable_entity()
click to toggle source
# File lib/trusona/services/base_service.rb, line 98 def unprocessable_entity raise Trusona::UnprocessableEntityError, readable_error end
verify_response(response)
click to toggle source
# File lib/trusona/services/base_service.rb, line 56 def verify_response(response) raise Trusona::SigningError unless response.verified? end