module OAuth2
  module Storages
    class Strategy
      
      # Save new access token.
      #
      # @param [Auth2::AccessToken] Access token instance.
      #
      def access_token_save(access_token)
        raise NotImplementedError
      end
      
      # Find access token by given key.
      #
      # @param [String] Access token key to search.
      #
      def access_token_find_by_key(key)
        raise NotImplementedError        
      end
      
      # Save new authorization code.
      #
      # @param [Auth2::AuthCode] Authorization code instance.
      #
      def auth_code_save(auth_code)
        raise NotImplementedError
      end
      
      # Find authorization code by the given key.
      #
      # @param [String] Authorization code key.
      #
      def auth_code_find_by_key(key)
        raise NotImplementedError
      end
      
      # Save new client.
      #
      # @param [Auth2::Client] Client instance.
      #
      #
      def client_save(client)
        raise NotImplementedError
      end
      
      def client_find_by_key(key)
        raise NotImplementedError
      end
      
      def client_find_by_secret(secret)
        raise NotImplementedError
      end
    end
  end
end