public async Task <object> RequestAuthTokenAsync() { var paramaters = new Dictionary <string, string>() { { "grant_type", "client_credentials" }, { "scope", "accounts" } }; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "identity/v2/oauth2/token"); byte[] bytes = Encoding.UTF8.GetBytes($"{this._openApiConfiguration.ClientId}:{this._openApiConfiguration.Secret}"); request.Headers.Add(HttpRequestHeader.Authorization.ToString(), $"Basic {Convert.ToBase64String(bytes)}"); request.Content = new FormUrlEncodedContent(paramaters); HttpResponseMessage response = await this._httpClient.SendAsync(request); InvestecOpenApiErrorResponse errorResponse; switch (response.StatusCode) { case HttpStatusCode.OK: return((object)JsonSerializer.Deserialize <AccessTokenResponse>(await response.Content.ReadAsStringAsync())); case HttpStatusCode.BadRequest: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.OperationCancelled)); this._logger.LogError(nameof(ErrorEnum.OperationCancelled)); return((object)errorResponse); case HttpStatusCode.Unauthorized: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.OperationRefused)); this._logger.LogError(nameof(ErrorEnum.OperationRefused)); return((object)errorResponse); case HttpStatusCode.InternalServerError: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.OperationFailed)); this._logger.LogError(nameof(ErrorEnum.OperationFailed)); return((object)errorResponse); default: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.UnknownErrorOccurred)); this._logger.LogError(nameof(ErrorEnum.UnknownErrorOccurred)); return((object)errorResponse); } }
public async Task <object> GetAccountsAsync() { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "za/pb/v1/accounts"); request.Headers.Add(HttpRequestHeader.Authorization.ToString(), await GetAuthorizationTokenAsync()); request.Headers.Add(HttpRequestHeader.Accept.ToString(), "application/json"); HttpResponseMessage response = await this._httpClient.SendAsync(request); InvestecOpenApiErrorResponse errorResponse; switch (response.StatusCode) { case HttpStatusCode.OK: return((object)JsonSerializer.Deserialize <InvestecResponse>(await response.Content.ReadAsStringAsync())); case HttpStatusCode.BadRequest: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.OperationCancelled)); this._logger.LogError(nameof(ErrorEnum.OperationCancelled)); return((object)errorResponse); case HttpStatusCode.Unauthorized: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.OperationRefused)); this._logger.LogError(nameof(ErrorEnum.OperationRefused)); return((object)errorResponse); case HttpStatusCode.InternalServerError: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.OperationFailed)); this._logger.LogError(nameof(ErrorEnum.OperationFailed)); return((object)errorResponse); default: errorResponse = new InvestecOpenApiErrorResponse(nameof(ErrorEnum.UnknownErrorOccurred)); this._logger.LogError(nameof(ErrorEnum.UnknownErrorOccurred)); return((object)errorResponse); } }