/// <inheritdoc /> public async Task <PlaidResult <ItemResponse> > GetItemAsync(string accessToken) { //conditions Condition.Requires(accessToken).IsNotNullOrWhiteSpace(); //create the payload to pass var payload = new PlaidRequest(clientId, clientSecret, accessToken); //serialize object HttpContent content = ContentExtensions.ToJsonContent(payload); //post it and get the response HttpResponseMessage response = await this.httpClient.PostAsync(PlaidInformation.ItemManagement_GetItems, content); //read the string string responseJson = await response.Content.ReadAsStringAsync(); //create the result PlaidResult <ItemResponse> result = new PlaidResult <ItemResponse>(responseJson); //is it ok if (response.StatusCode == HttpStatusCode.OK) { ItemResponse itemResponse = JsonConvert.DeserializeObject <ItemResponse>(responseJson); result.Value = itemResponse; } //parse the exception result.Exception = await this.ParseException(response, responseJson); //return return(result); }
/// <inheritdoc /> public async Task <PlaidResult <RotateAccessTokenResponse> > RotateAccessTokenAsync(string accessToken) { //conditions Condition.Requires(accessToken).IsNotNullOrWhiteSpace(); //create the payload to pass PlaidRequest rotateTokenRequest = new PlaidRequest(this.clientId, this.clientSecret, accessToken); //pass and get response HttpResponseMessage response = await this.httpClient.PostAsJsonAsync(PlaidInformation.ItemManagement_RotateAccessToken, rotateTokenRequest); //read the string string responseJson = await response.Content.ReadAsStringAsync(); //create the result PlaidResult <RotateAccessTokenResponse> result = new PlaidResult <RotateAccessTokenResponse>(responseJson); //is it ok if (response.StatusCode == HttpStatusCode.OK) { RotateAccessTokenResponse tokenResponse = JsonConvert.DeserializeObject <RotateAccessTokenResponse>(responseJson); result.Value = tokenResponse; return(result); } result.Exception = await this.ParseException(response, responseJson); return(result); }
/// <inheritdoc /> public async Task <PlaidResult <bool> > DeleteUserAsync(AccessToken accessToken, ApiType api = ApiType.Connect) { Condition.Requires(accessToken).IsNotNull(); PlaidRequest deleteRequest = new PlaidRequest(this.clientId, this.clientSecret, accessToken.Value); HttpResponseMessage response = await this.httpClient.DeleteAsJsonAsync(GetEndpoint(api), deleteRequest); PlaidResult <bool> result = new PlaidResult <bool>(response.StatusCode == HttpStatusCode.OK); result.Exception = await this.ParseException(response); return(result); }
/// <inheritdoc /> public async Task <PlaidResult <IList <Account> > > GetAccountsAsync(AccessToken accessToken) { Condition.Requires(accessToken).IsNotNull(); PlaidRequest balanceRequest = new PlaidRequest(this.clientId, this.clientSecret, accessToken.Value); HttpResponseMessage response = await this.httpClient.PostAsJsonAsync("balance", balanceRequest); // Re-use add user result since it contains the account objects of interest AddUserResult userResult = await this.ProcessAddOrAuthResponse(response); PlaidResult <IList <Account> > result = new PlaidResult <IList <Account> >(); if (userResult.Accounts != null) { result.Value = new List <Account>(userResult.Accounts); } result.Exception = userResult.Exception; return(result); }
/// <inheritdoc /> public async Task <PlaidResult <IList <Account> > > GetAuthAccountDataAsync(AccessToken accessToken) { Condition.Requires(accessToken).IsNotNull(); PlaidRequest dataRequest = new PlaidRequest(this.clientId, this.clientSecret, accessToken.Value); HttpResponseMessage response = await this.httpClient.PostAsJsonAsync(GetEndpoint(ApiType.Auth, "get"), dataRequest); string responseJson = await response.Content.ReadAsStringAsync(); if (response.StatusCode == HttpStatusCode.OK) { // Can re-use AddUserResponse since it has accounts, just ignore transactions AddUserResponse dataResponse = JsonConvert.DeserializeObject <AddUserResponse>(responseJson); return(new PlaidResult <IList <Account> >(dataResponse?.Accounts?.Select(a => a.ToAccount()).ToList())); } PlaidResult <IList <Account> > errorResult = new PlaidResult <IList <Account> >(); errorResult.Exception = await this.ParseException(response, responseJson); return(errorResult); }