Class: ComplyanceSDK::Onboarding::Client
- Inherits:
-
Object
- Object
- ComplyanceSDK::Onboarding::Client
- Defined in:
- lib/complyance_sdk/onboarding/client.rb
Constant Summary collapse
- PATH =
'/unified-onboarding/api/onboard'
Instance Attribute Summary collapse
-
#api_key ⇒ Object
readonly
Returns the value of attribute api_key.
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
-
#timeout ⇒ Object
readonly
Returns the value of attribute timeout.
Instance Method Summary collapse
- #create(payload, idempotency_key: nil) ⇒ Object
-
#initialize(api_key:, base_url:, timeout: 30) ⇒ Client
constructor
A new instance of Client.
Constructor Details
#initialize(api_key:, base_url:, timeout: 30) ⇒ Client
Returns a new instance of Client.
14 15 16 17 18 19 20 21 |
# File 'lib/complyance_sdk/onboarding/client.rb', line 14 def initialize(api_key:, base_url:, timeout: 30) @api_key = api_key.to_s.strip @base_url = base_url.to_s.strip @timeout = timeout raise ArgumentError, 'api_key is required' if @api_key.empty? raise ArgumentError, 'base_url is required' if @base_url.empty? end |
Instance Attribute Details
#api_key ⇒ Object (readonly)
Returns the value of attribute api_key.
12 13 14 |
# File 'lib/complyance_sdk/onboarding/client.rb', line 12 def api_key @api_key end |
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
12 13 14 |
# File 'lib/complyance_sdk/onboarding/client.rb', line 12 def base_url @base_url end |
#timeout ⇒ Object (readonly)
Returns the value of attribute timeout.
12 13 14 |
# File 'lib/complyance_sdk/onboarding/client.rb', line 12 def timeout @timeout end |
Instance Method Details
#create(payload, idempotency_key: nil) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/complyance_sdk/onboarding/client.rb', line 23 def create(payload, idempotency_key: nil) uri = URI.parse(service_url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == 'https' http.read_timeout = timeout http.open_timeout = timeout request = Net::HTTP::Post.new(uri.request_uri) request['Accept'] = 'application/json' request['Content-Type'] = 'application/json' request['Authorization'] = "Bearer #{api_key}" request['Idempotency-Key'] = idempotency_key.to_s.strip if idempotency_key request.body = payload.to_json response = http.request(request) body = response.body.to_s.empty? ? {} : JSON.parse(response.body) return body.merge('httpStatus' => response.code.to_i) if response.code.to_i.between?(200, 299) || [422].include?(response.code.to_i) raise "Onboarding request failed with status #{response.code}: #{response.body}" rescue JSON::ParserError raise "Onboarding request returned invalid JSON: #{response.body}" end |