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