示例#1
0
        public void AProductsDetailsWithStoreInfoTest()
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            KrogerClient            client   = new KrogerClient();
            ProductsDetailsResponse response = client.ProductsDetailsAsync(
                new ProductsDetailsRequest()
            {
                UPCs = new List <string>()
                {
                    "0001111087720", "0001111060828", "0001111060826"
                },
                FilterBadProducts = false,
                StoreId           = "00122",
                DivisionId        = "701"
            }
                ).Result;

            response = client.ProductsDetailsAsync(
                new ProductsDetailsRequest()
            {
                UPCs = new List <string>()
                {
                    "0001111087720", "0001111060828", "0001111060826"
                },
                FilterBadProducts = false,
                StoreId           = "00122",
                DivisionId        = "701"
            }
                ).Result;
            Assert.NotNull(response.Products);
            Assert.That(response.Products.Any());
        }
示例#2
0
        public async Task KrogerClientGetsRefreshToken()
        {
            var krogerConfig = KrogerConfig.FromFile("../../../kroger_secrets.json");

            var client = new KrogerClient(krogerConfig);
            await client.RefreshToken();
        }
示例#3
0
        public void ProductsDetailsTest()
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            KrogerClient            client   = new KrogerClient();
            ProductsDetailsResponse response = client.ProductsDetailsAsync(
                new ProductsDetailsRequest()
            {
                UPCs = new List <string>()
                {
                    "0001111087720", "0001111060828", "0001111060826"
                },
                FilterBadProducts = false
            }
                ).Result;

            response = client.ProductsDetailsAsync(
                new ProductsDetailsRequest()
            {
                UPCs = new List <string>()
                {
                    "0001111087720", "0001111060828", "0001111060826"
                },
                FilterBadProducts = false
            }
                ).Result;
        }
示例#4
0
        private async Task <Context> InitializeContextAsync(KrogerClient krogerClient, CancellationToken token)
        {
            var userEntity = await _entityRepository.GetOrAddUserAsync(_settings.Email, token);

            var commandEntity = await _entityRepository.StartCommandAsync(userEntity.Id, token);

            return(new Context(krogerClient, userEntity, commandEntity, token));
        }
示例#5
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "KrogerCompare/StoreSearch/")] HttpRequestMessage req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            KrogerClient       client             = Startup.KrogerClient;
            StoreSearchRequest storeSearchRequest = JsonConvert.DeserializeObject <StoreSearchRequest>(req.Content.ReadAsStringAsync().Result);

            StoreSearchResponse storeSearchResponse = await client.StoreSearchAsync(storeSearchRequest);

            return(req.CreateResponse(HttpStatusCode.OK, storeSearchResponse));
        }
示例#6
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log)
        {
            KrogerClient krogerClient = Startup.KrogerClient;

            StoreInfoProductsDetailsRequest storesProductsRequests = JsonConvert.DeserializeObject <StoreInfoProductsDetailsRequest>(req.Content.ReadAsStringAsync().Result);

            Task <ProductsDetailsResponse>[] productsDetailsResponses = new Task <ProductsDetailsResponse> [storesProductsRequests.RequestStoreInfos.Length];
            for (int a = 0; a < storesProductsRequests.RequestStoreInfos.Length; a++)
            {
                StoreIdentifier request = storesProductsRequests.RequestStoreInfos[a];
                productsDetailsResponses[a] =
                    krogerClient.ProductsDetailsAsync(
                        new ProductsDetailsRequest()
                {
                    DivisionId        = request.DivisionId,
                    FilterBadProducts = true,
                    StoreId           = request.StoreId,
                    UPCs = storesProductsRequests.UPCs
                });
            }

            await Task.WhenAll(productsDetailsResponses);

            Dictionary <string, ProductStorePrice> productStorePrices = new Dictionary <string, ProductStorePrice>();
            List <StoreIdentifier> noProductsReturned = new List <StoreIdentifier>();

            for (int a = 0; a < productsDetailsResponses.Length; a++)
            {
                ProductsDetailsResponse result = productsDetailsResponses[a].Result;
                if (result.TotalCount == 0)
                {
                    noProductsReturned.Add(storesProductsRequests.RequestStoreInfos[a]);
                }

                foreach (ProductDetail product in result.Products)
                {
                    if (!productStorePrices.ContainsKey(product.UPC))
                    {
                        productStorePrices[product.UPC] = Startup.Mapper.Map <ProductStorePrice>(product);
                    }
                    productStorePrices[product.UPC].StorePrices.Add(Startup.Mapper.Map <StorePrice>(product));

                    StoreIdentifier si = new StoreIdentifier()
                    {
                        DivisionId = storesProductsRequests.RequestStoreInfos[a].DivisionId,
                        StoreId    = storesProductsRequests.RequestStoreInfos[a].StoreId
                    };
                    productStorePrices[product.UPC].StorePrices.Last().StoreIdentifier = si;
                }
            }

            return(req.CreateResponse(HttpStatusCode.OK, new { ProductStorePrices = productStorePrices.Values, NoProductsReturned = noProductsReturned }));
        }
示例#7
0
 public Context(
     KrogerClient client,
     UserEntity user,
     CommandEntity command,
     CancellationToken token)
 {
     Client          = client;
     User            = user;
     Command         = command;
     Token           = token;
     GetReceipts     = new Dictionary <ReceiptId, GetReceiptEntity>();
     AlreadyComplete = 0;
 }
示例#8
0
        public void SeachAllTest()
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            KrogerClient client   = new KrogerClient();
            var          response = client.SearchAllAsync(new SearchAllRequest()
            {
                Query = "bananas"
            }).Result;

            Assert.NotNull(response);
            Assert.NotNull(response.Upcs);
            Assert.That(response.Upcs.Any(x => x.Length > 0));
        }
示例#9
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log)
        {
            KrogerClient     krogerClient     = Startup.KrogerClient;
            SearchAllRequest searchAllRequest = JsonConvert.DeserializeObject <SearchAllRequest>(req.Content.ReadAsStringAsync().Result);

            SearchAllResponse searchAllResponse = krogerClient.SearchAll(searchAllRequest);

            ProductsDetailsResponse productsDetailsResponse = await krogerClient.ProductsDetailsAsync(new ProductsDetailsRequest()
            {
                UPCs = searchAllResponse.Upcs
            });

            return(req.CreateResponse(HttpStatusCode.OK,
                                      new { productsDetailsResponse.Products }
                                      ));
        }
示例#10
0
        static Startup()
        {
            ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12;

            MapperConfiguration mapperConfiguration = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <ProductDetail, StorePrice>();
                cfg.CreateMap <ProductDetail, ProductStorePrice>();
            }



                                                                              );

            Mapper       = mapperConfiguration.CreateMapper();
            KrogerClient = new KrogerClient();
        }
示例#11
0
        public void RestSharpTest()
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            KrogerClient client = new KrogerClient();
            var          r      = client.ProductRestSharp(new ProductsDetailsRequest()
            {
                UPCs = new List <string>()
                {
                    "0001111087720", "0001111060828", "0001111060826"
                },
                FilterBadProducts = false
            });


            Assert.NotNull(r.Products);
            Assert.That(r.Products.Any());
        }
示例#12
0
        public void StoreSearchTest()
        {
            System.Net.ServicePointManager.Expect100Continue = false;
            ServicePointManager.SecurityProtocol             = SecurityProtocolType.Tls12;
            KrogerClient client    = new KrogerClient();
            var          response  = client.StoreSearchAsync("kansas city").Result;
            var          response2 = client.StoreSearchAsync("kansas city").Result;

            Assert.NotNull(response);
            Assert.NotNull(response2);
            Assert.NotNull(response.Fuel);
            Assert.NotNull(response2.Fuel);
            Assert.NotNull(response.Stores);
            Assert.NotNull(response2.Stores);

            Assert.That(response.Fuel.Any(x => x.DivisionNumber != null));
            Assert.That(response2.Fuel.Any(x => x.DivisionNumber != null));
            Assert.That(response.Stores.Any(x => x.StoreNumber != null));
            Assert.That(response2.Stores.Any(x => x.StoreNumber != null));
        }
        public static async Task Main(string[] args)
        {
            try
            {
                IConfiguration config = new ConfigurationBuilder()
                                        .SetBasePath(Directory.GetCurrentDirectory())
                                        .AddJsonFile("appsettings.json")
                                        .Build();

                var               appSettings              = config.GetSection("AppSettings");
                var               pathToAppSecrets         = appSettings["PathToAppSecrets"];
                var               sheetId                  = appSettings["SheetId"];
                var               sheetName                = appSettings["SheetName"];
                var               pathToGecko              = appSettings["PathToGecko"];
                var               pathToSecrets            = appSettings["PathToSecret"];
                var               pathToLoginScript        = appSettings["PathToLoginScript"];
                var               pathToCheckoutItemScript = appSettings["PathToCheckoutItemScript"];
                var               pathToKrogerConfig       = appSettings["PathToKrogerSecret"];
                AppSecrets        secrets                  = Newtonsoft.Json.JsonConvert.DeserializeObject <AppSecrets>(File.ReadAllText(pathToSecrets));
                KrogerConfig      krogerConfig             = KrogerConfig.FromFile(pathToKrogerConfig);
                KrogerClient      krogerClient             = new KrogerClient(krogerConfig);
                GoogleSheetHelper sheetHelper              = new GoogleSheetHelper(pathToAppSecrets, "GroceryApp");
                var               items = await sheetHelper.GetRange(sheetId, $"{sheetName}!A:B");

                var groceryItems = GetGroceryItems(items.Values);
                var kitems       = groceryItems.Select(m => m.KrogerItemFromGroceryItem());
                await krogerClient.RefreshToken();

                krogerConfig.ToFile(pathToKrogerConfig);
                await krogerClient.Add(kitems.ToList());

                Console.WriteLine("All done");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"ERROR : {ex.Message}");
            }

            Console.WriteLine("End of script");
            Console.ReadLine();
        }