Sha256: 6529922a5106664049d014336397210e14677dae7bb930f737530eeae0bba526

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

module PensioAPI
  module Mixins
    module RequestDefaults
      def self.included(base)
        base.send(:include, HTTParty)
        base.send(:attr_reader, :response)
        base.send(:attr_accessor, :credentials)
      end

      HEADERS = {
        'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8'
      }

      def initialize(path, options={})
        @credentials = options.delete(:credentials)
        @credentials = PensioAPI::Credentials.for(@credentials.to_sym) unless @credentials.nil? || @credentials.is_a?(PensioAPI::Credentials)
        @credentials ||= PensioAPI::Credentials.default_credentials if PensioAPI::Credentials.credentials_mode == :default || PensioAPI::Credentials.allow_defaults
        raise Errors::NoCredentials unless @credentials && @credentials.supplied?

        self.class.base_uri @credentials.base_uri unless self.class.base_uri

        @response = self.class.post(path, request_options(options))
      end

      private

      def request_options(options)
        timeout = options.delete(:timeout)
        {
          basic_auth: auth,
          headers: (options.delete(:headers) || {}).merge(HEADERS),
          body: options
        }.tap do |request_options|
          request_options[:timeout] = timeout if timeout
        end
      end

      def auth
        {
          username: @credentials.username,
          password: @credentials.password
        }
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pensio_api-0.3.3 lib/pensio_api/mixins/request_defaults.rb
pensio_api-0.3.2 lib/pensio_api/mixins/request_defaults.rb