D2lvalenceElixir.Auth.D2LUserContext (D2lvalenceElixir v0.1.0) View Source

Link to this section Summary

Functions

Create a properly tokenized URL for a new request through this user context.

Create a properly tokenized URL for a new request through this user context, starting from a full URL.

Creates a Full User Context from the app context and the simple authentication information created by get_simple_authentication_keys/1

Takes a full D2LUserContext and returns a map with only the basic information for authentication. This is usefull for Phoenix session storage. You don't send app_id and app_key to the user.

Interpret the result made for an API call through this user context.

Constructs a new authenticated calling user context.

Adjust the known time skew between the local client using this user context, and the back-end service. :param newSkewMillis: New server time-skew value, in milliseconds.

Link to this section Functions

Link to this function

create_authenticated_url(user_context, options \\ [])

View Source

Specs

create_authenticated_url(
  %D2lvalenceElixir.Auth.D2LUserContext{
    anonymous: term(),
    app_id: term(),
    app_key: term(),
    encrypt_requests: term(),
    host: term(),
    scheme: term(),
    server_skew: term(),
    user_id: term(),
    user_key: term()
  },
  %{method: String.t()}
  | %{api_route: String.t()}
  | %{method: String.t(), api_route: String.t()}
  | []
) :: String.t()

Create a properly tokenized URL for a new request through this user context.

:param api_route: API route to invoke on the back-end service (get all versions route by default). :param method: Method for the request (GET by default, POST, etc).

:returns: URI string you can fashion into an HTTP request, containing the time-limited authentication token parameters needed for a Valence API call.

Link to this function

decorate_url_with_authentication(user_context, url, options \\ [])

View Source

Specs

decorate_url_with_authentication(
  %D2lvalenceElixir.Auth.D2LUserContext{
    anonymous: term(),
    app_id: term(),
    app_key: term(),
    encrypt_requests: term(),
    host: term(),
    scheme: term(),
    server_skew: term(),
    user_id: term(),
    user_key: term()
  },
  String.t(),
  %{method: String.t()} | []
) :: String.t()

Create a properly tokenized URL for a new request through this user context, starting from a full URL.

:param url: Full URL to call on the back-end service; no default value. param method: Method for the request (GET by default, POST, etc).

:returns: URL you can use for an HTTP request, containing the time-limited authentication token parameters needed for a Valence API call.

Link to this function

get_full_user_context(app_context, d2_l_user_context_simple)

View Source

Specs

get_full_user_context(
  %D2lvalenceElixir.Auth.D2LAppContext{app_id: String.t(), app_key: String.t()},
  %D2lvalenceElixir.Auth.D2LUserContextSimple{
    anonymous: boolean(),
    encrypt_requests: boolean(),
    host: String.t(),
    scheme: String.t(),
    server_skew: integer(),
    user_id: String.t(),
    user_key: String.t()
  }
) ::
  {:error, String.t()}
  | {:ok,
     %D2lvalenceElixir.Auth.D2LUserContext{
       anonymous: boolean(),
       app_id: String.t(),
       app_key: String.t(),
       encrypt_requests: boolean(),
       host: String.t(),
       scheme: String.t(),
       server_skew: integer(),
       user_id: String.t(),
       user_key: String.t()
     }}

Creates a Full User Context from the app context and the simple authentication information created by get_simple_authentication_keys/1

Link to this function

get_simple_user_context(user_context)

View Source

Specs

get_simple_user_context(%D2lvalenceElixir.Auth.D2LUserContext{
  anonymous: term(),
  app_id: term(),
  app_key: term(),
  encrypt_requests: term(),
  host: term(),
  scheme: term(),
  server_skew: term(),
  user_id: String.t(),
  user_key: String.t()
}) :: %{user_id: String.t(), user_key: String.t()}

Takes a full D2LUserContext and returns a map with only the basic information for authentication. This is usefull for Phoenix session storage. You don't send app_id and app_key to the user.

Link to this function

interpret_result(_, result_code, _, _)

View Source

Specs

interpret_result(
  %D2lvalenceElixir.Auth.D2LUserContext{
    anonymous: term(),
    app_id: term(),
    app_key: term(),
    encrypt_requests: term(),
    host: term(),
    scheme: term(),
    server_skew: term(),
    user_id: term(),
    user_key: term()
  },
  integer(),
  String.t(),
  String.t() | nil
) :: :invalid_sig | :no_permission | :okay | :unknown

Interpret the result made for an API call through this user context.

:param result_code: The HTTP result code from the response; if a successful result (2xx), this method ignores the response. :param response: Response passed back by the back-end service. The precise form of this is implementation dependent. It could be a string, or a file object, or a Response object of some kind. :param logfile: Optional. A caller might want to provide a file stream for logging purposes; if present, this method should write logging messages to this file stream.

:returns: One of the enumerated D2LAuthResult class variables.

Specs

new(%{
  host: String.t(),
  user_id: String.t(),
  user_key: String.t(),
  app_id: String.t(),
  app_key: String.t(),
  encrypt_requests: true | false,
  server_skew: integer()
}) ::
  {:error, String.t()}
  | {:ok,
     %D2lvalenceElixir.Auth.D2LUserContext{
       anonymous: false | true,
       app_id: String.t(),
       app_key: String.t(),
       encrypt_requests: boolean(),
       host: String.t(),
       scheme: String.t(),
       server_skew: integer(),
       user_id: String.t(),
       user_key: String.t()
     }}

Constructs a new authenticated calling user context.

Clients are not intended to invoke this constructor directly; rather they should use the D2LAppContext.create_user_context() factory method, or the fashion_user_context() factory function.

:param hostName: Host/port string for the back-end service. :param user_id: User ID provided by the back-end service to the

            authenticated client application.

:param user_key: User Key provided by the back-end service to the

             authenticated client application.

:param encrypt_requests: If true, use HTTPS for requests made through

                     this user context; if false (the default), use
                     HTTP.

:param server_skew: Time skew between the service's time and the client

                application's time, in milliseconds.

:param signer: A signer instance that implements D2LSigner.

:return error:: If you provide None for hostName, port, user_id,

                or user_key parameters.
Link to this function

set_new_skew(user_context, new_skew)

View Source

Specs

set_new_skew(
  %D2lvalenceElixir.Auth.D2LUserContext{
    anonymous: term(),
    app_id: term(),
    app_key: term(),
    encrypt_requests: term(),
    host: term(),
    scheme: term(),
    server_skew: term(),
    user_id: term(),
    user_key: term()
  },
  integer()
) :: %D2lvalenceElixir.Auth.D2LUserContext{
  anonymous: term(),
  app_id: term(),
  app_key: term(),
  encrypt_requests: term(),
  host: term(),
  scheme: term(),
  server_skew: term(),
  user_id: term(),
  user_key: term()
}

Adjust the known time skew between the local client using this user context, and the back-end service. :param newSkewMillis: New server time-skew value, in milliseconds.