lib/setsuzoku/auth_strategy.rb in setsuzoku-0.11.9 vs lib/setsuzoku/auth_strategy.rb in setsuzoku-0.12.54

- old
+ new

@@ -1,51 +1,51 @@ -# typed: false +# typed: ignore # frozen_string_literal: true module Setsuzoku # The API Authentication Interface definition. # Any AuthStrategy that implements this interface must implement all abstract methods defined by AuthStrategy. # # Defines all necessary methods for handling authentication for any authentication strategy. module AuthStrategy - extend Forwardable extend T::Sig extend T::Helpers + + include HasConfigContext + abstract! attr_accessor :service attr_accessor :credential def_delegators :@service, :plugin, :api_strategy, :external_api_handler - # Initialize the auth_strategy and provide reference to service. # - # @param service [Service] the new instance of service with its correct strategies. - # - # @return [AuthStrategy] the new instance of auth_strategy + # initialize sig(:final) do params( service: T.any( Setsuzoku::Service::WebService::Service, T.untyped ), args: T.untyped ).returns(T.any( Setsuzoku::Service::WebService::AuthStrategies::BasicAuthStrategy, + Setsuzoku::Service::WebService::AuthStrategies::CustomAuthStrategy, Setsuzoku::Service::WebService::AuthStrategies::OAuthStrategy, T.untyped )) end - + # Initialize the auth_strategy and provide reference to service. + # + # @param service [Service] the new instance of service with its correct strategies. + # + # @return [AuthStrategy] the new instance of auth_strategy def initialize(service:, **args) self.service = service - credential = args[:credential] - self.credential = if self.plugin.registered_instance - credential - else - self.class.credential_class.stub_credential - end + self.set_credential!(self.class.credential_class.stub_credential) unless self.plugin.registered_instance + self.config_context = args self end # The getter method for a credential should retrieve dynamically if it's a proc. # We cannot assign this at initialize time, as it may not yet exist on the instance. @@ -53,14 +53,28 @@ # @return [Credential] the credential to use for the current requests. def credential self.plugin.get_registered_instance_val(@credential) end + # + # set_credential! + sig { params(credential: T.untyped).void } + # + # Assign the credential to the auth_strategy. + # + # @return [void] + def set_credential!(credential) + if credential + self.credential = credential + credential.auth_strategy = self + end + end + # Check if a credential is valid. # Additionally it should revalidate if invalid. # # @return [Boolean] true if the credential is valid. - sig { abstract.returns(T::Boolean) } + sig { returns(T::Boolean) } def auth_credential_valid?; end # Authorize a credential for a specific auth_strategy. # It should also set the credential attributes and save if appropriate. #