Sha256: b7bcf38727d6429a61fceebfd8c50e8b4c5aa37eb18c17d1524acf06411a55fc

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module Bs2Api
  module Request
    class Auth
      class << self
        def token
          Bs2Api.configuration.valid?

          response = create_session

          raise Bs2Api::Errors::Unauthorized, response["error_description"] if response.unauthorized?
          raise Bs2Api::Errors::BadRequest, response["error_description"] if response.bad_request?
          raise Bs2Api::Errors::ServerError, response.body if !response.success?

          response["access_token"]
        end

        private
          def create_session
            HTTParty.post(
              auth_url,
              headers: headers,
              body: body,
              basic_auth: {
                username: Bs2Api.configuration.client_id,
                password: Bs2Api.configuration.client_secret
              }
            )
          end

          def headers
            {
              "Content-Type": "application/x-www-form-urlencoded",
              "Accept": "application/json"
            }
          end

          def body
            {
              grant_type: "client_credentials",
              scope: "pix.write%20pix.read"
            }.queryfy
          end

          def auth_url
            "#{Bs2Api.endpoint}/auth/oauth/v2/token"
          end
     end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bs2_api-0.3.2 lib/bs2_api/request/auth.rb
bs2_api-0.3.1 lib/bs2_api/request/auth.rb