예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }