Exemple #1
0
        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");
            }
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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");
            }
        }