Sha256: 62d608d74bcae17a37c1a532439bed770e154b9980282959d9fcf9e1e48b4666

Contents?: true

Size: 1.74 KB

Versions: 5

Compression:

Stored size: 1.74 KB

Contents

# frozen_string_literal: true

module Tikkie
  module Api
    # 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::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::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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
tikkie-api-0.2.2 lib/tikkie/api/configuration.rb
tikkie-api-0.2.1 lib/tikkie/api/configuration.rb
tikkie-api-0.2.0 lib/tikkie/api/configuration.rb
tikkie-api-0.1.1 lib/tikkie/api/configuration.rb
tikkie-api-0.1.0 lib/tikkie/api/configuration.rb