private string FormatIosInstallationUrl(Model.AppData appData) { if (appData.IsDirectlyInstallable) { System.Web.HttpRequest request = null; try { request = System.Web.HttpContext.Current.Request; } catch { } // must be a secure connection and an iOS device to do a local installation if (request == null || !request.IsSecureConnection || string.IsNullOrEmpty(request.UserAgent) || !System.Text.RegularExpressions.Regex.IsMatch(request.UserAgent, @"(?:iPhone|iPad|iPod)", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { return(null); } StringBuilder url = new StringBuilder(); url.Append("itms-services://?action=download-manifest&url="); url.Append(PublicApi.Url.Absolute(PublicApi.Url.BuildUrl("ipa-installation"))); url.Append("/__key/"); url.Append(PublicApi.Url.EncodePathComponent(appData.File.FileStoreKey)); if (!string.IsNullOrEmpty(appData.File.Path)) { url.Append("/"); url.Append(PublicApi.Url.EncodePathComponent(appData.File.Path)); } url.Append("/"); url.Append(PublicApi.Url.EncodeFileComponent(appData.File.FileName)); url.Append("/install.plist"); return(url.ToString()); } else { StringBuilder url = new StringBuilder(); url.Append("http://appstore.com/"); string appName = appData.Name; appName.Replace("&", "and"); appName = appName.Normalize(NormalizationForm.FormKD); appName = appName.ToLowerInvariant(); appName = System.Text.RegularExpressions.Regex.Replace(appName, "[^a-z0-9]", ""); url.Append(appName); return(url.ToString()); } }
internal MobileApplication(Model.AppData appData, Services.IAppDataService appDataService) : base() { _appData = appData; _appDataService = appDataService; }