private async void HandleSearch(string text) { // Check for internet connection if (!CrossConnectivity.Current.IsConnected) { await Application.Current.MainPage.DisplayAlert("", "No internet connection", "OK"); return; } string document = ""; IList <Product> products = null; if (text != null && text.Trim() != "") { string query = Uri.EscapeDataString(text.Trim()); document = BingWebRequest.SendRequest("/shop?q=" + query); } if (document != null && document != "") { products = new ProductExtractor().ExtractProducts(document); } if (products != null && products.Count > 0) { Products = new ObservableCollection <Product>(products); SelectedOption = null; } else { await Application.Current.MainPage.DisplayAlert("", "No results", "OK"); } }
public async Task GenerateProductsTemplates_ProperlyLaysTheInformation() { // arrange var currentTestDirectory = Path.Combine(this.OutputDirectory, nameof(GenerateProductsTemplates_ProperlyLaysTheInformation)); var extractorConfig = this.GetMockedExtractorConsoleAppConfiguration( splitApis: false, apiVersionSetName: string.Empty, multipleApiNames: string.Empty, includeAllRevisions: false); var extractorParameters = new ExtractorParameters(extractorConfig); var mockedPolicyClient = MockPolicyClient.GetMockedApiClientWithDefaultValues(); var mockedPolicyExtractor = new PolicyExtractor(this.GetTestLogger <PolicyExtractor>(), mockedPolicyClient, new TemplateBuilder()); var mockedApisClient = MockApisClient.GetMockedApiClientWithDefaultValues(); var mockedProductsClient = MockProductsClient.GetMockedApiClientWithDefaultValues(); var mockedGroupsClient = MockGroupsClient.GetMockedApiClientWithDefaultValues(); var mockedTagClient = MockTagClient.GetMockedApiClientWithDefaultValues(); var productExtractor = new ProductExtractor( this.GetTestLogger <ProductExtractor>(), mockedPolicyExtractor, mockedProductsClient, mockedGroupsClient, mockedTagClient, new TemplateBuilder()); var extractorExecutor = ExtractorExecutor.BuildExtractorExecutor( this.GetTestLogger <ExtractorExecutor>(), productExtractor: productExtractor); extractorExecutor.SetExtractorParameters(extractorParameters); // act var productTemplate = await extractorExecutor.GenerateProductsTemplateAsync( singleApiName : It.IsAny <string>(), currentTestDirectory, productApiResources : It.IsAny <List <ProductApiTemplateResource> >()); // assert // generated product policy files var policyFileName = string.Format(PolicyExtractor.ProductPolicyFileNameFormat, MockProductsClient.ProductName1); File.Exists(Path.Combine(currentTestDirectory, PolicyExtractor.PoliciesDirectoryName, policyFileName)).Should().BeTrue(); // generated product template files File.Exists(Path.Combine(currentTestDirectory, extractorParameters.FileNames.Products)).Should().BeTrue(); var templateParameters = productTemplate.Parameters; templateParameters.Should().ContainKey(ParameterNames.ApimServiceName); templateParameters.Should().ContainKey(ParameterNames.PolicyXMLBaseUrl); templateParameters.Should().ContainKey(ParameterNames.PolicyXMLSasToken); templateParameters.Should().ContainKey(ParameterNames.ServiceUrl); templateParameters.Should().ContainKey(ParameterNames.ApiLoggerId); var templateResources = productTemplate.Resources; // product resource var productResource = templateResources.First(x => x.Type == ResourceTypeConstants.Product); productResource.Name.Should().Contain(MockProductsClient.ProductName1); // group resources var groupResources = templateResources.Where(x => x.Type == ResourceTypeConstants.ProductGroup).ToList(); groupResources.Should().HaveCount(2); (groupResources[0].Name.Contains(MockGroupsClient.GroupName1) || groupResources[1].Name.Contains(MockGroupsClient.GroupName1)).Should().BeTrue(); (groupResources[0].Name.Contains(MockGroupsClient.GroupName2) || groupResources[1].Name.Contains(MockGroupsClient.GroupName2)).Should().BeTrue(); // policy resources var policyResource = templateResources.First(x => x.Type == ResourceTypeConstants.ProductPolicy); policyResource.Name.Should().Contain(MockProductsClient.ProductName1); // tag resources var tagResources = templateResources.Where(x => x.Type == ResourceTypeConstants.ProductTag).ToList(); tagResources.Should().HaveCount(2); (tagResources[0].Name.Contains(MockTagClient.TagName1) || tagResources[1].Name.Contains(MockTagClient.TagName1)).Should().BeTrue(); (tagResources[0].Name.Contains(MockTagClient.TagName2) || tagResources[1].Name.Contains(MockTagClient.TagName2)).Should().BeTrue(); }
private async void ProcessImage(MediaFile file) { // Check for internet connection if (!CrossConnectivity.Current.IsConnected) { await Application.Current.MainPage.DisplayAlert("", "No internet connection", "OK"); return; } if (file == null) { return; } // Show photo and enable loading animation Source = file.Path; IsRunning = true; IsVisible = true; // Annotate image on another thread string keywords = ""; try { await Task.Run(async() => { keywords = await AnnotateAsync(file.Path); }); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } // Show placeholder and disable loading animation Source = "placeholder.png"; IsRunning = false; IsVisible = false; // Search for the item using Bing shop if (keywords.Trim() != "") { string document = ""; IList <Product> products = null; string query = Uri.EscapeDataString(keywords.Trim()); document = BingWebRequest.SendRequest("/shop?q=" + query); if (document != null && document != "") { products = new ProductExtractor().ExtractProducts(document); } if (products != null && products.Count > 0) { await Application.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(new ResultPage(products))); } else { await Application.Current.MainPage.DisplayAlert("", "No results", "OK"); } } else { await Application.Current.MainPage.DisplayAlert("", "No results", "OK"); } }