Sha256: e262e83d766b8f94fa2c5c9c69df0aa1bd3852e121a3b0f76eaa211f4b98e4dd

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

# frozen_string_literal: true

module Tikkie
  module Api
    module V1
      # Tikkie API Configuration. An API Key and private key are mandatory.
      # see https://developer.abnamro.com/get-started
      class Configuration
        SANDBOX_API_URL = "https://api-sandbox.abnamro.com/v1/"
        PRODUCTION_API_URL = "https://api.abnamro.com/v1/"

        SANDBOX_OAUTH_TOKEN_URL = "https://auth-sandbox.abnamro.com/oauth/token"
        PRODUCTION_OAUTH_TOKEN_URL = "https://auth.abnamro.com/oauth/token"

        DEFAULT_HASHING_ALGORITHM = "RS256"
        VALID_HASHING_ALGORITHMS = %w[RS256 RS384 RS512].freeze

        attr_reader :api_key, :private_key, :options

        def initialize(api_key, private_key, options = {})
          @api_key = api_key
          @private_key = private_key
          @options = options
        end

        def private_data
          unless File.exist?(@private_key)
            raise Tikkie::Api::V1::Exception, "Private key does not exist: #{@private_key}"
          end

          OpenSSL::PKey::RSA.new(File.read(@private_key))
        end

        def jwt_hashing_algorithm
          if @options[:hashing_algorithm]
            unless VALID_HASHING_ALGORITHMS.include?(@options[:hashing_algorithm])
              raise Tikkie::Api::V1::Exception, "Invalid hashing algorithm provided: #{@options[:hashing_algorithm]} (expected: #{VALID_HASHING_ALGORITHMS.join(', ')})"
            end

            @options[:hashing_algorithm]
          else
            DEFAULT_HASHING_ALGORITHM
          end
        end

        def api_url
          if @options[:test]
            SANDBOX_API_URL
          else
            PRODUCTION_API_URL
          end
        end

        def oauth_token_url
          if @options[:test]
            SANDBOX_OAUTH_TOKEN_URL
          else
            PRODUCTION_OAUTH_TOKEN_URL
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tikkie-api-2.0.0 lib/tikkie/api/v1/configuration.rb