Sha256: 6b7369d67ff469d44e78a2b87f6118df12381952483ae84c8133aee39e43c227

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

module Fortnox
  module API
    module ClassMethods

      def get_access_token( base_url: nil, client_secret: nil, authorization_code: nil )
        base_url = validate_base_url( base_url )
        client_secret = validate_client_secret( client_secret )
        authorization_code = validate_authorization_code( authorization_code )

        base_uri( base_url )

        set_headers(
          'Accept' => 'application/json',
          'Client-Secret' => client_secret,
          'Authorisation-Code' => authorization_code,
        )

        response = get('/')
        response[ 'Authorisation' ][ 'AccessToken' ]
      end

      def set_header( name: nil, value: nil )
        headers[ name ] = value
      end

      def set_headers( headers = {} )
        headers.each do |name, value|
          set_header( name: name, value: value )
        end
      end

      def remove_header( name: nil )
        headers.delete( name )
      end

      def validate_base_url( base_url )
        base_url ||= ENV['FORTNOX_API_BASE_URL']
        fail ArgumentError, 'You have to provide a base url.' unless base_url
        base_url
      end

      def validate_client_secret( client_secret )
        client_secret ||= ENV['FORTNOX_API_CLIENT_SECRET']
        fail ArgumentError, 'You have to provide your client secret.' unless client_secret
        client_secret
      end

      def validate_access_token( access_token )
        access_token ||= ENV['FORTNOX_API_ACCESS_TOKEN']
        fail ArgumentError, 'You have to provide your access token.' unless access_token
        access_token
      end

      def validate_authorization_code( authorization_code )
        authorization_code ||= ENV['FORTNOX_API_AUTHORIZATION_CODE']
        fail ArgumentError, 'You have to provide your access token.' unless authorization_code
        authorization_code
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fortnox-api-0.0.2 lib/fortnox/api/class_methods.rb