class SmartId::Api::Request
Constants
- DEMO_BASE_URL
- DEMO_SSL_KEY
- PRODUCTION_BASE_URL
- PRODUCTION_SSL_KEY
- PROD_KEY_EXPIRY
Public Class Methods
execute(method:, uri:, params:)
click to toggle source
# File lib/smart_id/api/request.rb, line 19 def self.execute(method:, uri:, params:) begin api_request = new(method, uri, params) api_request.execute rescue RestClient::RequestFailed => e case e.http_code when 471 raise SmartId::IncorrectAccountLevelError when 403 raise SmartId::InvalidPermissionsError when 404 raise SmartId::UserNotFoundError when 480 raise SmartId::OutdatedApiError when 580 raise SmartId::SystemUnderMaintenanceError else raise SmartId::ConnectionError.new(e) end rescue RestClient::SSLCertificateNotVerified raise SmartId::SSLCertificateNotVerified end end
new(method, uri, params)
click to toggle source
# File lib/smart_id/api/request.rb, line 12 def initialize(method, uri, params) @method = method @url = self.class.const_get("#{SmartId.environment}_BASE_URL") + uri @params = params @logger = Logger.new(STDOUT) end
Public Instance Methods
execute()
click to toggle source
# File lib/smart_id/api/request.rb, line 49 def execute maybe_warn_of_ssl_key_expiry if @method.to_sym == :post attrs = post_request_attrs else attrs = get_request_attrs end request = RestClient::Request.execute(**attrs) end
maybe_warn_of_ssl_key_expiry()
click to toggle source
# File lib/smart_id/api/request.rb, line 43 def maybe_warn_of_ssl_key_expiry if (PROD_KEY_EXPIRY - Date.today).to_i < 60 @logger.warn("[Smart-id-Ruby] SSL KEY for security checks will soon expire, please update to newer version of this gem") end end
Private Instance Methods
default_attrs()
click to toggle source
# File lib/smart_id/api/request.rb, line 63 def default_attrs { method: @method, url: @url, headers: { content_type: :json, accept: :json }, timeout: SmartId.poller_timeout_seconds + 1, ssl_verify_callback: lambda do |_, cert_store| provided_pub_key = cert_store.chain[0].public_key saved_key = self.class.const_get("#{SmartId.environment}_SSL_KEY") Digest::SHA256.digest(provided_pub_key.to_der) == Base64.decode64(saved_key) end } end
get_request_attrs()
click to toggle source
# File lib/smart_id/api/request.rb, line 77 def get_request_attrs default_attrs.merge(headers: { **default_attrs[:headers], params: @params }) end
post_request_attrs()
click to toggle source
# File lib/smart_id/api/request.rb, line 84 def post_request_attrs default_attrs.merge(payload: JSON.generate(@params)) end