Sha256: 05464ac24933d88e0f5e3939be44f4a6868a8cada7d3b3e3b8072aaabeee5730

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

require 'active_support/core_ext/numeric/time'

module Wso2Toolbox
  module TokenManager
    module Adapters
      module RailsCachedAdapter
        class << self
          TOKEN_DELAY = 5.minutes

          def generate_token
            new_token unless active_token?
            store_token(Setting.token_for_job)
          end

          private_class_method

          def new_token
            token_params =
              Wso2Toolbox::TokenManager::ApiManagerService.create_token
            Setting.token_for_job =
              "#{token_params[:token_type]} #{token_params[:access_token]}"
            Setting.token_time_for_job =
              Time.now + token_params[:expires_in].to_i.seconds
          end

          def store_token(token)
            RequestStore.store[:token] = token
          end

          def active_token?
            return false unless Setting.token_time_for_job
            Time.parse(Setting.token_time_for_job.to_s) - TOKEN_DELAY > Time.now
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wso2_toolbox-0.2.3 lib/wso2_toolbox/token_manager/adapters/rails_cached_adapter.rb
wso2_toolbox-0.2.2 lib/wso2_toolbox/token_manager/adapters/rails_cached_adapter.rb