public async Task QueryNetflixProdConfig()
        {
            DisplayCatalogHandler dcathandler = DisplayCatalogHandler.ProductionConfig();
            await dcathandler.QueryDCATAsync("9wzdncrfj3tj");

            Assert.True(dcathandler.IsFound);
            Assert.Equal("Netflix", dcathandler.ProductListing.Product.LocalizedProperties[0].ProductTitle);
        }
示例#2
0
        public async Task GetPackageInstancesForNetflix()
        {
            DisplayCatalogHandler handler = DisplayCatalogHandler.ProductionConfig();
            await handler.QueryDCATAsync("9wzdncrfj3tj");

            Debug.WriteLine("Running GetPackageInstancesForNetflix");
            string WUID             = "d8d75bb2-c5cd-44f2-8c26-c1d1ae5b13fa";
            var    packageinstances = await handler.GetPackagesForProductAsync();

            foreach (var item in packageinstances)
            {
                Debug.WriteLine($"{item.PackageMoniker} : {item.PackageType} : {item.PackageUri}");
            }
        }
示例#3
0
        public async Task GetPackagesAndNamesForNetflix()
        {
            DisplayCatalogHandler displayCatalog = DisplayCatalogHandler.ProductionConfig();
            await displayCatalog.QueryDCATAsync("9wzdncrfj3tj");

            Assert.True(displayCatalog.IsFound);

            string xml = await FE3Handler.SyncUpdatesAsync(displayCatalog.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.FulfillmentData.WuCategoryId);

            IList <string> RevisionIds  = new List <string>();
            IList <string> PackageNames = new List <string>();
            IList <string> UpdateIDs    = new List <string>();

            FE3Handler.ProcessUpdateIDs(xml, out RevisionIds, out PackageNames, out UpdateIDs);
            IList <Uri> FileUris = await FE3Handler.GetFileUrlsAsync(UpdateIDs, RevisionIds);
        }
示例#4
0
        static async Task MessageReceived(SocketMessage message)
        {
            if (message.Content.StartsWith("$"))
            {
#if DEBUG
                await message.Channel.SendMessageAsync($"StoreBot is running in DEBUG mode. Output will be verbose.");
#endif
                switch (message.Content)
                {
                case "$DEV":
                    dcat = new DisplayCatalogHandler(DCatEndpoint.Dev, new Locale(Market.US, Lang.en, true));
                    await message.Channel.SendMessageAsync($"DCAT Endpoint was changed to {message.Content}");

                    break;

                case "$INT":
                    dcat = new DisplayCatalogHandler(DCatEndpoint.Int, new Locale(Market.US, Lang.en, true));
                    await message.Channel.SendMessageAsync($"DCAT Endpoint was changed to {message.Content}");

                    break;

                case "$PROD":
                    dcat = new DisplayCatalogHandler(DCatEndpoint.Production, new Locale(Market.US, Lang.en, true));
                    await message.Channel.SendMessageAsync($"DCAT Endpoint was changed to {message.Content}");

                    break;

                case "$XBOX":
                    dcat = new DisplayCatalogHandler(DCatEndpoint.Xbox, new Locale(Market.US, Lang.en, true));
                    await message.Channel.SendMessageAsync($"DCAT Endpoint was changed to {message.Content}");

                    break;
                }
                if (message.Content.Length != 13)
                {
                    return;
                }
                string ProductID = message.Content.Substring(1, 12);
                await dcat.QueryDCATAsync(ProductID);

                if (dcat.IsFound)
                {
                    await message.Channel.SendMessageAsync("Working....");
                    await BuildReply(dcat.ProductListing, message);
                }
                else
                {
                    await message.Channel.SendMessageAsync("No Product was Found.");
                }
            }
            else if (message.Content.StartsWith("*X")) //Search with Xbox Device Family
            {
                DisplayCatalogHandler dcathandler   = DisplayCatalogHandler.ProductionConfig();
                DCatSearch            SearchResults = await dcathandler.SearchDCATAsync(message.Content.Substring(2), DeviceFamily.Universal);

                int count = 0;
                foreach (Result R in SearchResults.Results)
                {
                    while (settingsinstance.NumberOfSearchResults >= count)
                    {
                        await message.Channel.SendMessageAsync(R.Products[0].Title);

                        count++;
                    }
                }
            }
            else if (message.Content.StartsWith("*D")) //Search with Desktop Device Family
            {
                DisplayCatalogHandler dcathandler   = DisplayCatalogHandler.ProductionConfig();
                DCatSearch            SearchResults = await dcathandler.SearchDCATAsync(message.Content.Substring(2), DeviceFamily.Desktop);

                int count = 0;
                foreach (Result R in SearchResults.Results)
                {
                    while (settingsinstance.NumberOfSearchResults >= count)
                    {
                        await message.Channel.SendMessageAsync(R.Products[0].Title);

                        count++;
                    }
                }
            }
        }
示例#5
0
        public static async Task <string> QueryProduct(string ProductID)
        {
            DisplayCatalogHandler dcat = DisplayCatalogHandler.ProductionConfig();
            await dcat.QueryDCATAsync(ProductID);

            if (!dcat.IsFound)
            {
                return("");
            }
            StringBuilder MoreDetailsHelper = new StringBuilder();

            MoreDetailsHelper.AppendLine($"`{dcat.ProductListing.Product.LocalizedProperties[0].ProductTitle} - {dcat.ProductListing.Product.LocalizedProperties[0].PublisherName}");
            MoreDetailsHelper.AppendLine($"Rating: {dcat.ProductListing.Product.MarketProperties[0].UsageData[0].AverageRating} Stars");
            MoreDetailsHelper.AppendLine($"Last Modified: {dcat.ProductListing.Product.LastModifiedDate}");
            MoreDetailsHelper.AppendLine($"Original Release: {dcat.ProductListing.Product.MarketProperties[0].OriginalReleaseDate}");
            MoreDetailsHelper.AppendLine($"Product Type: {dcat.ProductListing.Product.ProductType}");
            MoreDetailsHelper.AppendLine($"Is a Microsoft Listing: {dcat.ProductListing.Product.IsMicrosoftProduct}");
            if (dcat.ProductListing.Product.ValidationData != null)
            {
                MoreDetailsHelper.AppendLine($"Validation Info: {dcat.ProductListing.Product.ValidationData.RevisionId}");
            }
            if (dcat.ProductListing.Product.SandboxID != null)
            {
                MoreDetailsHelper.AppendLine($"SandboxID: {dcat.ProductListing.Product.SandboxID}");
            }

            foreach (AlternateId ID in dcat.ProductListing.Product.AlternateIds) //Dynamically add any other ID(s) that might be present rather than doing a ton of null checks.
            {
                MoreDetailsHelper.AppendLine($"{ID.IdType}: {ID.Value}");
            }
            if (dcat.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.FulfillmentData != null)
            {
                MoreDetailsHelper.AppendLine($"WuCategoryID: {dcat.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.FulfillmentData.WuCategoryId}");
                MoreDetailsHelper.AppendLine($"EAppx Key ID: {dcat.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.Packages[0].KeyId}");
            }
            MoreDetailsHelper.AppendLine("`");
            IList <PackageInstance> packageInstances = await dcat.GetPackagesForProductAsync();

            StringBuilder packages = new StringBuilder();

            if (dcat.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.Packages.Count > 0)
            {
                if (dcat.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.Packages.Count != 0)
                {
                    //For some weird reason, some listings report having packages when really they don't have one hosted. This checks the child to see if the package is really null or not.
                    if (!object.ReferenceEquals(dcat.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.Packages[0].PackageDownloadUris, null))
                    {
                        foreach (var Package in dcat.ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.Packages[0].PackageDownloadUris)
                        {
                            packages.AppendLine($"Xbox Live Package: {Package.Uri}");
                        }
                    }
                }
            }
            StringBuilder fe3packages = new StringBuilder();

            foreach (PackageInstance package in packageInstances)
            {
                try
                {
                    fe3packages.AppendLine($"{package.PackageMoniker} : {package.PackageType} : {package.PackageUri}");
                }
                catch { }
            }
            return(MoreDetailsHelper.ToString() + "#" + packages.ToString() + "#" + fe3packages.ToString());
        }