Sha256: f2533d057bc44010b75a5036929bfd386bf51c4e05f83b142c5674f80b7cd268

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

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

      module ClassMethods
        def set_base_uri
          self.base_uri PensioAPI::Credentials.base_uri unless self.base_uri
        end
      end

      HEADERS = {
        'Content-Type' => 'application/x-www-form-urlencoded'
      }

      def initialize(path, options={})
        self.class.set_base_uri

        raise Errors::NoCredentials unless credentials_supplied?

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

      private

      def request_options(options)
        {
          basic_auth: auth,
          headers: (options.delete(:headers) || {}).merge(HEADERS),
          body: options
        }
      end

      def auth
        {
          username: PensioAPI::Credentials.username,
          password: PensioAPI::Credentials.password
        }
      end

      def credentials_supplied?
        Credentials.base_uri && Credentials.username && Credentials.password
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pensio_api-0.2.2 lib/pensio_api/mixins/request_defaults.rb