lib/hadley/token_store.rb in hadley-0.0.2 vs lib/hadley/token_store.rb in hadley-0.0.3

- old
+ new

@@ -1,27 +1,62 @@ +# This class handles the storage, retrieval and removal of OAuth 2 bearer tokens sent from the AFID authorization +# server. The TokenStore delegates most of the work to the delegate store, which must support the api set forth by +# ActiveSupport::Cache::Store. class Hadley::TokenStore + # This method initializes the TokenStore with the delegate store. + # + # @param [ActiveSupport::Cache::Store] store The TokenStore instance will delegate the heavy lifting to the provided + # store. def initialize(store) @store = store end - def key_for(token) - "afid-access-token:#{token}" - end - + # This method retrieves the AFID identity information associated with the provided token. If no such identity is + # found the result will be nil. + # + # @param [String] token The unique token provisioned by the AFID resource server. + # + # @return [Hash, nil] A Hash representation of the identity associated with the provided token or nil if no such identity + # exists. def get(token) access = @store.read(key_for(token)) if access access[:anonymous] = access[:identity] == Hadley::ANONYMOUS_IDENTITY end access end + # This method stores the provided AFID identity information under the given AFID token for the duration of time + # specified by the expires_in argument. + # + # @param [String] token The unique token provisioned by the AFID resource server. + # @param [Integer] expires_in The duration of time (in seconds) that the provided AFID identity information should be + # stored. + # @param [Hash] data The identity information to be assiciated with the given AFID token. + # + # @return [Boolean, nil] True if and only if the identity information was stored successfully. def put(token, expires_in, data={}) @store.write(key_for(token), data, expires_in: expires_in) end + # This method removes the AFID identity information associated with the provided token. + # + # @param [String] token The token provisioned by the AFID resource server. + # + # @return [Boolean, nil] True if an only if the identity information was removed successfully. def delete(token) @store.delete(key_for(token)) + end + + protected + + # This method derives the appropriate datastore key from the given AFID token. + # + # @param [String] token The unique token provisioned by the AFID resource server. + # + # @return [Symbol] The appropriate datastore key for the given AFID token. + def key_for(token) + "afid-access-token:#{token}".to_sym end end