Пример #1
0
        async Task oAuthLogin(UserModel user)
        {
            //Authenticate against ADFS and NW Gateway
            oAuthLogin oauthlogin = new oAuthLogin();

            user.Username = user.Username + "@jkintranet.com";
            String access_token = await oauthlogin.LoginUserAsync(user);


            if ((access_token != "" && access_token != Constants._userNotExistInNWGateway) && access_token != Constants._gatewayUrlError)
            {
                //Store Username and Password in global Area
                Constants._user = user;

                //Store Username and Password in local shared preference
                Settings.Username = user.Username;
                Settings.Password = user.Password;

                //Retrieving Hotel Code
                try
                {
                    await hotelInformationAndLogin();
                }
                catch (Exception)
                {
                    await DisplayAlert(Constants._headerConnectionLost, Constants._networkerror, Constants._buttonOkay);
                }
            }
            else if (access_token == Constants._gatewayUrlError)
            {
                await DisplayAlert(Constants._headerConnectionLost, Constants._gatewayUrlError, Constants._buttonOkay);
            }
            else
            {
                if (access_token == Constants._userNotExistInNWGateway)
                {
                    await DisplayAlert(Constants._headerMessage, Constants._userNotExistInNWGateway, Constants._buttonClose);
                }
                else
                {
                    await DisplayAlert(Constants._headerWrongCredentials, Constants._incorrectlogincredentials, Constants._buttonClose);

                    LoginEntryUsername.Text = "";
                    LoginEntryPassword.Text = "";
                    LoginEntryUsername.Focus();
                }
            }


            stopLoading();
        }
        public async Task <string> GetODataService(string url, string postBody)
        {
            string xcsrf_token  = "";
            string cookie_value = "";

            try
            {
                //Refresh Token if expires
                if (Convert.ToDateTime(Settings.ExpiresTime) <= DateTime.Now)
                {
                    //Authenticate against ADFS and NW Gateway
                    oAuthLogin oauthlogin   = new oAuthLogin();
                    String     access_token = await oauthlogin.LoginUserAsync(Constants._user);

                    if (access_token == "" && access_token == Constants._userNotExistInNWGateway)
                    {
                        userLogout.logout();
                    }
                }

                CookieContainer   cookies = new CookieContainer();
                HttpClientHandler handler = new HttpClientHandler();
                handler.CookieContainer = cookies;

                using (var client = new HttpClient(handler))
                {
                    //Get X-CSRF-TOKEN
                    client.BaseAddress = new Uri(Constants._gatewayURL + url);
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Constants._access_token);
                    client.DefaultRequestHeaders.Add("x-csrf-token", "fetch");

                    //GET data
                    HttpResponseMessage response = await client.GetAsync(Constants._gatewayURL + url);

                    xcsrf_token = response.Headers.GetValues("X-CSRF-Token").FirstOrDefault();

                    Uri uri = new Uri(Constants._gatewayURL + url);
                    IEnumerable <Cookie> responseCookies = cookies.GetCookies(uri).Cast <Cookie>();
                    foreach (Cookie cookie in responseCookies)
                    {
                        if (Constants._cookie == cookie.Name)
                        {
                            cookie_value = cookie.Value;
                        }
                    }
                }

                if (xcsrf_token != "" && cookie_value != "")
                {
                    //Post Method
                    Uri baseUri = new Uri(Constants._gatewayURL + url);
                    HttpClientHandler clientHandler = new HttpClientHandler();
                    //Set Cookie in Post
                    clientHandler.CookieContainer.Add(baseUri, new Cookie(Constants._cookie, cookie_value));

                    using (var client_post = new HttpClient(clientHandler))
                    {
                        client_post.BaseAddress = new Uri(Constants._gatewayURL + url);
                        client_post.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Constants._access_token);
                        client_post.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        //Set Token in Post
                        client_post.DefaultRequestHeaders.Add("X-CSRF-Token", xcsrf_token);

                        new APILogger().Logger($"Access Token :{Constants._access_token} ***** X-CSRF-Token :{xcsrf_token}");

                        //Post json content
                        var response = client_post.PostAsync(Constants._gatewayURL + url, new StringContent(postBody, Encoding.UTF8, "application/json")).Result;
                        if (response.IsSuccessStatusCode)
                        {
                            var perRes = response.Content.ReadAsStringAsync();
                            return(perRes.Result);
                        }
                        else
                        {
                            var perRes2 = response.Content.ReadAsStringAsync();
                            return(perRes2.Result);
                        }
                    }
                }
                else
                {
                    new APILogger().Logger($"Post Method Error ***** Token or cookie is not available");
                    return("Token or cookie is not available");
                }
            }
            catch (Exception e)
            {
                new APILogger().Logger($"Post Method Exception :{e.StackTrace} ***** Post Method Exception Msg :{e.Message}");
                return("Error");
            }
        }