public virtual async Task <ApiResult <TokenResponse> > PostTokenAsync(TokenRequest requestObj) { if (!Connectivity.IsConnected) { return(HandledNotConnected <TokenResponse>()); } using (var client = HttpService.IdentityClient) { var requestMessage = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(string.Concat(client.BaseAddress, ApiRoute, "/token")), Content = new FormUrlEncodedContent(requestObj.ToIdentityTokenRequest()) }; requestMessage.Headers.Add("Device-Type", ((int)Helpers.OnPlatform(iOS: DeviceType.iOS, Android: DeviceType.Android, Windows: DeviceType.UWP)).ToString()); try { var response = await client.SendAsync(requestMessage).ConfigureAwait(false); var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (!response.IsSuccessStatusCode) { var errorResponse = JObject.Parse(responseContent); if (errorResponse["TwoFactorProviders2"] != null) { TokenService.SetTwoFactorToken(requestObj.Email, null); return(ApiResult <TokenResponse> .Success(new TokenResponse { TwoFactorProviders2 = errorResponse["TwoFactorProviders2"] .ToObject <Dictionary <TwoFactorProviderType, Dictionary <string, object> > >() }, response.StatusCode)); } return(await HandleErrorAsync <TokenResponse>(response).ConfigureAwait(false)); } var responseObj = JsonConvert.DeserializeObject <TokenResponse>(responseContent); return(ApiResult <TokenResponse> .Success(responseObj, response.StatusCode)); } catch { return(HandledWebException <TokenResponse>()); } } }
public virtual async Task <ApiResult <TokenResponse> > PostTokenAsync(TokenRequest requestObj) { if (!Connectivity.IsConnected) { return(HandledNotConnected <TokenResponse>()); } using (var client = HttpService.Client) { var requestMessage = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/token")), Content = new FormUrlEncodedContent(requestObj.ToIdentityTokenRequest()) }; try { var response = await client.SendAsync(requestMessage).ConfigureAwait(false); var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (!response.IsSuccessStatusCode) { var errorResponse = JObject.Parse(responseContent); if (errorResponse["TwoFactorProviders"] != null) { return(ApiResult <TokenResponse> .Success(new TokenResponse { TwoFactorProviders = errorResponse["TwoFactorProviders"].ToObject <List <int> >() }, response.StatusCode)); } return(await HandleErrorAsync <TokenResponse>(response).ConfigureAwait(false)); } var responseObj = JsonConvert.DeserializeObject <TokenResponse>(responseContent); return(ApiResult <TokenResponse> .Success(responseObj, response.StatusCode)); } catch { return(HandledWebException <TokenResponse>()); } } }
public virtual async Task <ApiResult <TokenResponse> > PostTokenAsync(TokenRequest requestObj) { var requestMessage = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(string.Concat(SettingsService.Instance.IdentityBaseUrl, "/connect/token")), Content = new FormUrlEncodedContent(requestObj.ToIdentityTokenRequest()) }; try { var response = await Client.SendAsync(requestMessage).ConfigureAwait(false); var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (!response.IsSuccessStatusCode) { var errorResponse = JObject.Parse(responseContent); if (errorResponse["TwoFactorProviders2"] != null) { return(ApiResult <TokenResponse> .Success(new TokenResponse { TwoFactorProviders2 = errorResponse["TwoFactorProviders2"] .ToObject <Dictionary <TwoFactorProviderType, Dictionary <string, object> > >() }, response.StatusCode)); } return(await HandleErrorAsync <TokenResponse>(response).ConfigureAwait(false)); } var responseObj = JsonConvert.DeserializeObject <TokenResponse>(responseContent); return(ApiResult <TokenResponse> .Success(responseObj, response.StatusCode)); } catch { return(HandledWebException <TokenResponse>()); } }