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}"); }
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}"); }
// 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); }
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()); } }
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()); } }
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()); } }
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()); } }
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()); } }