private void UpdateDetails(object sender, EventArgs e) { string requestURL = App.apiPath + App.productsApiPath + App.countryContextPathSuffix; HttpResponseMessage response = HttpRequestSender.SendHttpRequest(requestURL, viewModel.Item, HttpMethod.Put, true).GetAwaiter().GetResult(); requestURL = App.apiPath + App.productsApiPath + "/" + viewModel.Item.Id + App.countryContextPathSuffix; response = HttpRequestSender.SendHttpRequest(requestURL, null, HttpMethod.Get, true).GetAwaiter().GetResult(); if (!response.IsSuccessStatusCode) { label_InfoForUser.Text = "Product details update failed."; label_InfoForUser.TextColor = Color.Red; return; } string editedItemStream = response.Content.ReadAsStringAsync() .GetAwaiter().GetResult(); Item editedItem = JsonConvert.DeserializeObject <Item>(editedItemStream); viewModel.Item = editedItem; UpdatePageDetails(); ChangeDetailsEditMode(sender, e); label_InfoForUser.Text = "Product details update succeded."; label_InfoForUser.TextColor = Color.Green; //App.Current.MainPage = new MainPage(); }
public async Task WhenErrorReceivedAnExceptionIsThown() { using (var httpListener = new TestHttpListener(HttpStatusCode.Forbidden)) using (var httpRequestSender = new HttpRequestSender()) { var requestMessage = new HttpRequestMessage(HttpMethod.Get, httpListener.ListeningUrl); var doRequest = httpRequestSender.SendHttpRequest(requestMessage); await Assert.ThrowsAsync <HttpRequestException>(() => doRequest); } }
private async void OnAuthCompletedAsync(object sender, AuthenticatorCompletedEventArgs e) { string UserInfoUrl = "https://www.googleapis.com/oauth2/v2/userinfo"; var authenticator = sender as OAuth2Authenticator; if (authenticator != null) { authenticator.Completed -= OnAuthCompletedAsync; authenticator.Error -= OnAuthErrorAsync; } GoogleUserModel user = null; if (e.IsAuthenticated) { // If the user is authenticated, request their basic user data from Google // UserInfoUrl = https://www.googleapis.com/oauth2/v2/userinfo var request = new OAuth2Request("GET", new Uri(UserInfoUrl), null, e.Account); var response = request.GetResponseAsync().GetAwaiter().GetResult(); if (response != null) { // Deserialize the data and store it in the account store string userJson = response.GetResponseTextAsync().GetAwaiter().GetResult(); user = JsonConvert.DeserializeObject <GoogleUserModel>(userJson); await DisplayAlert("Successful authorization", "Google have granted your credentials.", "OK"); string requestForBearerTokenURL = App.apiPath + App.usersApiPath + "/LogInUsingGoogleAccount?idToken=" + e.Account.Properties["id_token"]; HttpResponseMessage responseForBearerToken = HttpRequestSender.SendHttpRequest(requestForBearerTokenURL, user, HttpMethod.Post).GetAwaiter().GetResult(); string bearerTokenString = responseForBearerToken.Content.ReadAsStringAsync() .GetAwaiter().GetResult(); if (bearerTokenString == "null") { label_InfoForUser.Text = "Service could not start session."; label_InfoForUser.TextColor = Color.Red; return; } TokenModel bearerToken = JsonConvert.DeserializeObject <TokenModel>(bearerTokenString); BearerTokenModel.Instance.Token = bearerToken.Token; App.Current.MainPage = new MainPage(); return; } } await DisplayAlert("Unsuccessful authorization", "Google have not granted your credentials", "OK"); }
public void WhenErrorReceivedAnExceptionIsThown() { using (var testHttpListener = new TestHttpListener(HttpStatusCode.Forbidden, null)) { using (HttpRequestSender apiRequestSender = new HttpRequestSender()) { HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, testHttpListener.ListeningUrl); Assert.ThrowsAsync <HttpRequestException>(async() => await apiRequestSender.SendHttpRequest(requestMessage)); } } }
async void Save_Clicked(object sender, EventArgs e) { string requestURL = App.apiPath + App.productsApiPath + App.countryContextPathSuffix; HttpResponseMessage response = HttpRequestSender.SendHttpRequest(requestURL, Item, HttpMethod.Post, true).GetAwaiter().GetResult(); if (!response.IsSuccessStatusCode) { return; } MessagingCenter.Send(this, "AddItem", Item); await Navigation.PopModalAsync(); }
public async Task WhenSuccessReceivedResponseIsReturned() { using (var httpListener = new TestHttpListener(HttpStatusCode.OK)) using (var httpRequestSender = new HttpRequestSender()) { var requestMessage = new HttpRequestMessage(HttpMethod.Get, httpListener.ListeningUrl); var response = await httpRequestSender.SendHttpRequest(requestMessage); Assert.Equal( httpRequestSender.UserAgent, response.RequestMessage.Headers.GetValues("User-Agent").First() ); } }
async Task ExecuteLoadItemsCommand() { if (IsBusy) { return; } IsBusy = true; try { if (App.currentConnectionType == ConnectionType.Offline) { Items = App.offlineSync.OfflineItems; } else { if (Items == null) { Items = new ObservableCollection <Item>(); } Items.Clear(); //var items = await DataStore.GetItemsAsync(true); string requestURL = App.apiPath + App.productsApiPath + App.countryContextPathSuffix; HttpResponseMessage response = HttpRequestSender.SendHttpRequest(requestURL, null, HttpMethod.Get, true).GetAwaiter().GetResult(); string responseString = response.Content.ReadAsStringAsync() .GetAwaiter().GetResult(); var items = JsonConvert.DeserializeObject <IEnumerable <Item> >(responseString); foreach (var item in items) { Items.Add(item); } } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
private void LogMeIn(object sender, EventArgs e) { string requestForRefreshTokenURL = App.apiPath + App.usersApiPath + "/LogIn"; UserModel userData = new UserModel(entry_Username.Text, entry_Password.Text); HttpResponseMessage responseForRefreshToken = HttpRequestSender.SendHttpRequest(requestForRefreshTokenURL, userData, HttpMethod.Post).GetAwaiter().GetResult(); string refreshTokenString = responseForRefreshToken.Content.ReadAsStringAsync() .GetAwaiter().GetResult(); if (refreshTokenString == "null") { label_InfoForUser.Text = "There is not such user with that password."; label_InfoForUser.TextColor = Color.Red; return; } TokenModel refreshToken = JsonConvert.DeserializeObject <TokenModel>(refreshTokenString); try { SecureStorage.SetAsync(App.refreshTokenStorageName, refreshToken.Token); SecureStorage.SetAsync(App.usernameStorageName, entry_Username.Text); } catch (Exception ex) { Debug.WriteLine(ex); } bool result = StartSession(refreshToken); if (!result) { label_InfoForUser.Text = "Server could not start new session."; label_InfoForUser.TextColor = Color.Red; } else { App.Current.MainPage = new MainPage(); } }
private void RegisterMe(object sender, EventArgs e) { string requestURL = App.apiPath + App.usersApiPath + "/Register"; UserModel userData = new UserModel(entry_Username.Text, entry_Password.Text); HttpResponseMessage response = HttpRequestSender.SendHttpRequest(requestURL, userData, HttpMethod.Post).GetAwaiter().GetResult(); if (response.IsSuccessStatusCode) { label_InfoForUser.Text = "User account created."; label_InfoForUser.TextColor = Color.Green; } else { label_InfoForUser.Text = "This username is already taken."; label_InfoForUser.TextColor = Color.Red; } return; }
private bool StartSession(TokenModel refreshToken) { string requestForBearerTokenURL = App.apiPath + App.usersApiPath + "/StartSession"; HttpResponseMessage responseForBearerToken = HttpRequestSender.SendHttpRequest(requestForBearerTokenURL, refreshToken, HttpMethod.Post).GetAwaiter().GetResult(); string bearerTokenString = responseForBearerToken.Content.ReadAsStringAsync() .GetAwaiter().GetResult(); if (bearerTokenString == "null") { return(false); } TokenModel bearerToken = JsonConvert.DeserializeObject <TokenModel>(bearerTokenString); BearerTokenModel.Instance.Token = bearerToken.Token; return(true); }
private void ChangeQuantity(object sender, EventArgs e) { int quantityChange; if (!int.TryParse(entry_QuantityChange.Text, out quantityChange)) { label_InfoForUser.Text = "Quantity change must have only number."; label_InfoForUser.TextColor = Color.Red; return; } string requestURL = App.apiPath + App.productsApiPath + "/" + viewModel.Item.Id + "?quantityChange=" + entry_QuantityChange.Text; HttpResponseMessage response = HttpRequestSender.SendHttpRequest(requestURL, null, HttpMethod.Put, true).GetAwaiter().GetResult(); if (!response.IsSuccessStatusCode) { label_InfoForUser.Text = "Quantity change failed."; if (response.StatusCode == System.Net.HttpStatusCode.Conflict) { label_InfoForUser.Text += " Quantity can not be negative."; } label_InfoForUser.TextColor = Color.Red; return; } requestURL = App.apiPath + App.productsApiPath + "/" + viewModel.Item.Id + App.countryContextPathSuffix; response = HttpRequestSender.SendHttpRequest(requestURL, null, HttpMethod.Get, true).GetAwaiter().GetResult(); string editedItemStream = response.Content.ReadAsStringAsync() .GetAwaiter().GetResult(); Item editedItem = JsonConvert.DeserializeObject <Item>(editedItemStream); viewModel.Item = editedItem; UpdatePageDetails(); label_InfoForUser.Text = "Quantity change succeded."; label_InfoForUser.TextColor = Color.Green; //App.Current.MainPage = new MainPage(); }
private async void DeleteItemAsync(object sender, EventArgs e) { var userWantToDeleteProduct = await DisplayAlert("Delete product?", "Deletion of this product will be permanent", "Yes", "No"); if (!userWantToDeleteProduct) { return; } string requestURL = App.apiPath + App.productsApiPath + "/" + viewModel.Item.Id; HttpResponseMessage response = HttpRequestSender.SendHttpRequest(requestURL, null, HttpMethod.Delete, true).GetAwaiter().GetResult(); if (!response.IsSuccessStatusCode) { label_InfoForUser.Text = "Product deletion failed. You have necessary permitions?"; label_InfoForUser.TextColor = Color.Red; return; } App.Current.MainPage = new MainPage(); }
async Task ExecuteLoadItemsCommand() { if (IsBusy) { return; } IsBusy = true; try { if (Items == null) { Items = new ObservableCollection <CountryContextModel>(); } Items.Clear(); string requestURL = App.apiPath + App.countriesApiPath; HttpResponseMessage response = HttpRequestSender.SendHttpRequest(requestURL, null, HttpMethod.Get, true).GetAwaiter().GetResult(); string responseString = response.Content.ReadAsStringAsync() .GetAwaiter().GetResult(); var items = JsonConvert.DeserializeObject <IEnumerable <CountryContextModel> >(responseString); foreach (var item in items) { Items.Add(item); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }