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"); } }