Sha256: 723967892836e3abd7a0736e664c8f42d88e143bcbbf8dbfbdbe4586c3726993

Contents?: true

Size: 1.19 KB

Versions: 10

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module SolidusBolt
  module Users
    class RefreshAccessTokenService < SolidusBolt::BaseService
      attr_reader :session

      def initialize(session:)
        @session = session
        super
      end

      def call
        return if session[:bolt_access_token].nil?
        return session[:bolt_access_token] if session[:bolt_expiration_time] >= Time.now.utc

        refresh_access_token
      end

      private

      def refresh_access_token
        response = handle_result(HTTParty.post("#{api_base_url}/#{api_version}/oauth/token", build_options))

        session[:bolt_expiration_time] = Time.now.utc + response['expires_in']
        session[:bolt_refresh_token] = response['refresh_token']
        session[:bolt_refresh_token_scope] = response['refresh_token_scope']
        session[:bolt_access_token] = response['access_token']
      end

      def build_options
        {
          body: {
            grant_type: 'refresh_token',
            refresh_token: session[:bolt_refresh_token],
            client_id: publishable_key,
            scope: session[:bolt_refresh_token_scope],
            client_secret: api_key
          }
        }
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
solidus_bolt-0.7.2 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.7.1 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.7.0 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.6.0 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.5.0 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.4.0 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.3.0 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.2.0 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.1.0 app/services/solidus_bolt/users/refresh_access_token_service.rb
solidus_bolt-0.0.1 app/services/solidus_bolt/users/refresh_access_token_service.rb