/// <summary> /// Creates a client object which will automatically invoke the tokenInitializer when making an Api call with an expired token. /// </summary> /// <param name="parameters">The parameters to initialize the client object with.</param> /// <param name="tokenInitializer">The function to retrieve a new token when making an Api call with an expired token.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="CancellationToken.None"/>.</param> /// <returns></returns> public static async Task <EncompassRestClient> CreateAsync(ClientParameters parameters, Func <TokenCreator, Task <string> > tokenInitializer, CancellationToken cancellationToken = default) { Preconditions.NotNull(parameters, nameof(parameters)); var client = new EncompassRestClient(parameters, tokenInitializer); var accessToken = await tokenInitializer(new TokenCreator(client, cancellationToken)).ConfigureAwait(false); client.AccessToken.Token = accessToken; await parameters.TryInitializeAsync(client, client.CommonCache, cancellationToken).ConfigureAwait(false); return(client); }
/// <summary> /// Creates a client object from an existing access token. /// </summary> /// <param name="parameters">The parameters to initialize the client object with.</param> /// <param name="accessToken">The access token to use.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="CancellationToken.None"/>.</param> /// <returns></returns> public static async Task <EncompassRestClient> CreateFromAccessTokenAsync(ClientParameters parameters, string accessToken, CancellationToken cancellationToken = default) { Preconditions.NotNull(parameters, nameof(parameters)); Preconditions.NotNullOrEmpty(accessToken, nameof(accessToken)); var client = new EncompassRestClient(parameters); client.AccessToken.Token = accessToken; await parameters.TryInitializeAsync(client, client.CommonCache, cancellationToken).ConfigureAwait(false); return(client); }
/// <summary> /// Creates a client object from an authorization code. /// </summary> /// <param name="parameters">The parameters to initialize the client object with.</param> /// <param name="redirectUri">The redirect uri associated with the authorization code.</param> /// <param name="authorizationCode">The authorization code to use.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="CancellationToken.None"/>.</param> /// <returns></returns> public static async Task <EncompassRestClient> CreateFromAuthorizationCodeAsync(ClientParameters parameters, string redirectUri, string authorizationCode, CancellationToken cancellationToken = default) { Preconditions.NotNull(parameters, nameof(parameters)); Preconditions.NotNullOrEmpty(redirectUri, nameof(redirectUri)); Preconditions.NotNullOrEmpty(authorizationCode, nameof(authorizationCode)); var client = new EncompassRestClient(parameters); var accessToken = await client.AccessToken.GetTokenFromAuthorizationCodeAsync(redirectUri, authorizationCode, nameof(CreateFromAuthorizationCodeAsync), cancellationToken).ConfigureAwait(false); client.AccessToken.Token = accessToken; await parameters.TryInitializeAsync(client, client.CommonCache, cancellationToken).ConfigureAwait(false); return(client); }
/// <summary> /// Creates a client object from user credentials. It does not automatically retrieve a new token when the current one expires so most of the time you'll probably want to use the CreateAsync method instead. /// </summary> /// <param name="parameters">The parameters to initialize the client object with.</param> /// <param name="instanceId">The encompass instance id.</param> /// <param name="userId">The encompass user id.</param> /// <param name="password">The encompass user password.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="CancellationToken.None"/>.</param> /// <returns></returns> public static async Task <EncompassRestClient> CreateFromUserCredentialsAsync(ClientParameters parameters, string instanceId, string userId, string password, CancellationToken cancellationToken = default) { Preconditions.NotNull(parameters, nameof(parameters)); Preconditions.NotNullOrEmpty(instanceId, nameof(instanceId)); Preconditions.NotNullOrEmpty(userId, nameof(userId)); Preconditions.NotNullOrEmpty(password, nameof(password)); var client = new EncompassRestClient(parameters); var accessToken = await client.AccessToken.GetTokenFromUserCredentialsAsync(instanceId, userId, password, nameof(CreateFromUserCredentialsAsync), cancellationToken).ConfigureAwait(false); client.AccessToken.Token = accessToken; await parameters.TryInitializeAsync(client, client.CommonCache, cancellationToken).ConfigureAwait(false); return(client); }