Class: PostFinanceCheckout::WebhookEncryptionService
- Inherits:
-
Object
- Object
- PostFinanceCheckout::WebhookEncryptionService
- Defined in:
- lib/postfinancecheckout-ruby-sdk/api/webhook_encryption_service_api.rb
Instance Attribute Summary collapse
-
#api_client ⇒ Object
Returns the value of attribute api_client.
Instance Method Summary collapse
-
#initialize(api_client = ApiClient.default) ⇒ WebhookEncryptionService
constructor
A new instance of WebhookEncryptionService.
-
#is_content_valid(signature_header, content_to_verify) ⇒ bool
If webhook content body conforms with signature header.
-
#read(id, opts = {}) ⇒ WebhookEncryptionPublicKey
Read Reads the entity with the given ‘id’ and returns it.
-
#read_with_http_info(id, opts = {}) ⇒ Array<(WebhookEncryptionPublicKey, Fixnum, Hash)>
WebhookEncryptionPublicKey data, response status code and response headers.
Constructor Details
#initialize(api_client = ApiClient.default) ⇒ WebhookEncryptionService
Returns a new instance of WebhookEncryptionService.
24 25 26 |
# File 'lib/postfinancecheckout-ruby-sdk/api/webhook_encryption_service_api.rb', line 24 def initialize(api_client = ApiClient.default) @api_client = api_client end |
Instance Attribute Details
#api_client ⇒ Object
Returns the value of attribute api_client.
22 23 24 |
# File 'lib/postfinancecheckout-ruby-sdk/api/webhook_encryption_service_api.rb', line 22 def api_client @api_client end |
Instance Method Details
#is_content_valid(signature_header, content_to_verify) ⇒ bool
Returns if webhook content body conforms with signature header.
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/postfinancecheckout-ruby-sdk/api/webhook_encryption_service_api.rb', line 97 def is_content_valid(signature_header, content_to_verify) # Regular expression to extract algorithm, keyId, and signature from the signature_header regex = /^algorithm=([a-zA-Z0-9]+),\skeyId=([a-z0-9\-]+),\ssignature=([a-zA-Z0-9+\/=]+)$/ matcher = signature_header.match(regex) if matcher signature_algorithm = matcher[1] public_key_id = matcher[2] content_signature = matcher[3] public_key = read(public_key_id) raise "Could not find public key with id #{public_key_id}" if public_key.nil? return EncryptionUtil.is_content_valid(content_to_verify, content_signature, public_key.public_key, signature_algorithm) else raise "Invalid webhook signature header. Expected format: 'algorithm=<algorithm>, keyId=<keyId>, signature=<signature>'" end end |
#read(id, opts = {}) ⇒ WebhookEncryptionPublicKey
Read Reads the entity with the given ‘id’ and returns it.
33 34 35 36 |
# File 'lib/postfinancecheckout-ruby-sdk/api/webhook_encryption_service_api.rb', line 33 def read(id, opts = {}) data, _status_code, _headers = read_with_http_info(id, opts) return data end |
#read_with_http_info(id, opts = {}) ⇒ Array<(WebhookEncryptionPublicKey, Fixnum, Hash)>
Returns WebhookEncryptionPublicKey data, response status code and response headers.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/postfinancecheckout-ruby-sdk/api/webhook_encryption_service_api.rb', line 44 def read_with_http_info(id, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug "Calling API: WebhookEncryptionService.read ..." end # verify the required parameter 'id' is set fail ArgumentError, "Missing the required parameter 'id' when calling WebhookEncryptionService.read" if id.nil? # resource path local_var_path = "/webhook-encryption/read".sub('{format}','json') # query parameters query_params = {} query_params[:'id'] = id # header parameters header_params = {} # HTTP header 'Accept' (if needed) local_header_accept = ['application/json;charset=utf-8'] local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result # HTTP header 'Content-Type' local_header_content_type = ['*/*'] header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type) # form parameters form_params = {} # connection timeout timeout = @api_client.get_connection_timeout() # http body (model) post_body = nil auth_names = [] data, status_code, headers = @api_client.call_api(:GET, local_var_path, :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :timeout => timeout, :auth_names => auth_names, :return_type => 'WebhookEncryptionPublicKey') if @api_client.config.debugging @api_client.config.logger.debug "API called: WebhookEncryptionService#read\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |