Ejemplo n.º 1
0
        public string MakePlayerClientUrl(string launchId)
        {
            string playerPortalUrl = SdkConfig.PlayerPortalUrlOrDefault;
            string playerClientUrl = $"{playerPortalUrl}/player/{LaunchParams.ApplicationId}";

            var additionalUrlParams = new List <QueryParam> {
                // bypass playability test, required param for the dev flow
                QueryParam.Create("bypass_pts", "true"),
                QueryParam.Create("launch_id", launchId),
                // TODO: temporary param to enable launch on Web while in development.
                QueryParam.Create(
                    "e", "ChromeCloudcastPortalfeCommonwebEnableLaunchAnywhereParams::Launch"),
            };
            string queryString = additionalUrlParams.Where(p => p != null)
                                 .Select(p => p.ToString())
                                 .Aggregate((a, b) => $"{a}&{b}");

            return($"{playerClientUrl}?{queryString}");
        }
Ejemplo n.º 2
0
        public string MakeTestClientUrl(string launchName)
        {
            string portalUrl      = SdkConfig.PartnerPortalUrlOrDefault;
            string testClientUrl  = $"{portalUrl}/organizations/{SdkConfig.OrganizationId}/stream";
            string fragmentString =
                string.IsNullOrEmpty(LaunchParams.Account) ? "" : $"#Email={LaunchParams.Account}";

            var additionalUrlParams = new List <QueryParam> {
                QueryParam.Create("sdk_version", Uri.EscapeDataString(LaunchParams.SdkVersion)),
                QueryParam.Create("game_launch_name",
                                  Uri.EscapeDataString(launchName ?? string.Empty))
            };
            string queryString = additionalUrlParams.Where(p => p != null)
                                 .Select(p => p.ToString())
                                 .Aggregate((a, b) => $"{a}&{b}") +
                                 (string.IsNullOrWhiteSpace(LaunchParams.QueryParams) ? "" : "&") +
                                 LaunchParams.QueryParams;

            return($"{testClientUrl}?{queryString}{fragmentString}");
        }
Ejemplo n.º 3
0
        // TODO: remove the legacy launch flow.
        public ConfigStatus MakeLegacyLaunchUrl(out string url)
        {
            var    portalUrl = SdkConfig.PartnerPortalUrlOrDefault;
            string chromeUrl = $"{portalUrl}/organizations/{SdkConfig.OrganizationId}/stream";

            var queryParams = new List <QueryParam>
            {
                QueryParam.Create("cmd", WebUtility.UrlEncode(LaunchParams.Cmd)),
                QueryParam.Create("application_name",
                                  Uri.EscapeDataString(
                                      LaunchParams.ApplicationName ?? string.Empty)),
                QueryParam.Create("gamelet_name",
                                  Uri.EscapeDataString(LaunchParams.GameletName ?? string.Empty)),
                QueryParam.Create("test_account", LaunchParams.TestAccount),
                QueryParam.Create("vars",
                                  WebUtility.UrlEncode(
                                      string.Join(
                                          ";",
                                          (LaunchParams.GameletEnvironmentVars ?? string.Empty)
                                          .Split(';').Select(v => v.Trim())))),
                QueryParam.Create("renderdoc", LaunchParams.RenderDoc.ToString().ToLower()),
                QueryParam.Create("rgp", LaunchParams.Rgp.ToString().ToLower()),
                QueryParam.Create("sdk_version", WebUtility.UrlEncode(LaunchParams.SdkVersion)),
                QueryParam.Create("vulkan_driver_variant", LaunchParams.VulkanDriverVariant),
                QueryParam.Create("surface_enforcement_mode",
                                  LaunchParams.SurfaceEnforcementMode.ToString().ToLower()),
                QueryParam.Create("debug_mode", GetDebugMode())
            };

            string fragment =
                string.IsNullOrEmpty(LaunchParams.Account) ? "" : $"Email={LaunchParams.Account}";

            ConfigStatus status = TryMergeCustomQueryString(
                queryParams, out IEnumerable <QueryParam> mergedQueryParams);
            string queryString =
                mergedQueryParams.Select(p => p.ToString()).Aggregate((a, b) => $"{a}&{b}");
            string fragmentString = string.IsNullOrEmpty(fragment) ? "" : "#" + fragment;

            url = $"{chromeUrl}?{queryString}{fragmentString}";
            return(status);
        }
Ejemplo n.º 4
0
        public async Task <IList <CatalogItemModel> > RelatedItemsByTypeAsync(int catalogTypeId)
        {
            using (var cli = new WebApiClient(BaseAddressUri))
            {
                var pagination = await cli.GetAsync <PaginatedItems <CatalogItem> >("api/v1/catalog/items", QueryParam.Create("pageSize", 100));

                var records = pagination.Data;
                records = records.Where(r => r.CatalogTypeId == catalogTypeId);
                return(records.Select(r => new CatalogItemModel(r)).ToList());
            }
        }
Ejemplo n.º 5
0
        public async Task <IList <CatalogItemModel> > GetItemsAsync(int typeId, int brandId, string query)
        {
            string path = $"api/v1/catalog/items/type/{typeId}/brand/{brandId}";

            using (var cli = new WebApiClient(BaseAddressUri))
            {
                var pagination = await cli.GetAsync <PaginatedItems <CatalogItem> >(path, QueryParam.Create("pageSize", 100));

                var records = pagination.Data;

                if (!String.IsNullOrEmpty(query))
                {
                    records = records.Where(r => $"{r.Name}".ToUpper().Contains(query.ToUpper()));
                }

                return(records.Select(r => new CatalogItemModel(r)).ToList());
            }
        }
Ejemplo n.º 6
0
        public async Task <IList <CatalogItemModel> > GetItemsByVoiceCommandAsync(string query)
        {
            using (var cli = new WebApiClient(BaseAddressUri))
            {
                var pagination = await cli.GetAsync <PaginatedItems <CatalogItem> >("api/v1/catalog/items", QueryParam.Create("pageSize", 100));

                var records = pagination.Data;

                var queryIgnoreUpper = query?.ToUpperInvariant() ?? string.Empty;

                var filterType = (await GetCatalogTypesAsync()).FirstOrDefault(item => item.Name.ToUpperInvariant().Contains(queryIgnoreUpper));
                if (filterType != null)
                {
                    records = records.Where(item => item.CatalogTypeId == filterType.Id);
                }

                var filterBrand = (await GetCatalogBrandsAsync()).FirstOrDefault(item => item.Name.ToUpperInvariant().Contains(queryIgnoreUpper));
                if (filterBrand != null)
                {
                    records = records.Where(item => item.CatalogBrandId == filterBrand.Id);
                }

                return(records.Select(r => new CatalogItemModel(r)).ToList());
            }
        }
Ejemplo n.º 7
0
        public async Task <IList <CatalogItem> > RelatedItemsByTypeAsync(int catalogTypeId)
        {
            using (var cli = new WebApiClient(BaseAddressUri))
            {
                var pagination = await cli.GetAsync <PaginatedItems <CatalogItem> >("api/v1/catalog/items", QueryParam.Create("pageSize", 100));

                var items = pagination.Data;
                items = items.Where(r => r.CatalogTypeId == catalogTypeId);
                await Populate(items);

                return(items.ToList());
            }
        }
Ejemplo n.º 8
0
        public async Task <IList <CatalogItem> > GetItemsAsync(CatalogType catalogType, CatalogBrand catalogBrand, string query)
        {
            int catalogTypeId  = catalogType == null ? 0 : catalogType.Id;
            int catalogBrandId = catalogBrand == null ? 0 : catalogBrand.Id;

            string path = $"api/v1/catalog/items/type/{catalogTypeId}/brand/{catalogBrandId}";

            using (var cli = new WebApiClient(BaseAddressUri))
            {
                var pagination = await cli.GetAsync <PaginatedItems <CatalogItem> >(path, QueryParam.Create("pageSize", 100));

                var items = pagination.Data;

                if (!String.IsNullOrEmpty(query))
                {
                    items = items.Where(r => $"{r.Name}".ToUpper().Contains(query.ToUpper()));
                }

                await Populate(items);

                return(items.ToList());
            }
        }