/// <summary> /// ローカル情報に変換する /// </summary> /// <param name="manifest"></param> /// <returns></returns> private AddonInfomation ConvertToAddonInfo(V1::Manifest manifest) { var addon = new AddonInfomation(); addon.Name.Value = manifest.Name; addon.Author.Value = manifest.Author; addon.Description.Value = manifest.Description; addon.Version.Value = Version.Parse(manifest.Version); addon.Identifier.Value = manifest.Identifier; addon.Permissions.AddRange(manifest.Permissions); addon.HostPermissions.AddRange(manifest.HostPermissions); addon.AutoUpdatePolicy = manifest.AutoUpdatePolicy; addon.Scripts = manifest.Scripts; if (manifest.Icons.ContainsKey("32")) { addon.IconPathRelative.Value = manifest.Icons["32"]; } else { addon.IconPathRelative.Value = manifest.Icons.Select(i => new KeyValuePair <int, string>(int.Parse(i.Key), i.Value)).OrderByDescending(i => i.Key).FirstOrDefault().Value; } addon.TargetAPIVersion.Value = Version.Parse(manifest.TargetAPIVersion); return(addon); }
/// <summary> /// マニフェストをチェックする /// </summary> /// <param name="manifest"></param> /// <returns></returns> private IAttemptResult CheckManifest(V1::Manifest manifest) { if (string.IsNullOrEmpty(manifest.Name)) { return(new AttemptResult() { Message = "アドオン名が空白です。" }); } else if (string.IsNullOrEmpty(manifest.Author)) { return(new AttemptResult() { Message = "アドオン作者名が空白です。" }); } else if (string.IsNullOrEmpty(manifest.Version)) { return(new AttemptResult() { Message = "アドオンバージョンが空白です。" }); } else if (string.IsNullOrEmpty(manifest.ManifestVersion)) { return(new AttemptResult() { Message = "マニフェストバージョンが空白です。" }); } if (manifest.ManifestVersion != "1.0") { return(new AttemptResult() { Message = $"対応していないマニフェストバージョンです。({manifest.ManifestVersion})" }); } bool result = Version.TryParse(manifest.Version, out Version _); if (!result) { return(new AttemptResult() { Message = $"バージョンの形式が不正です。({manifest.Version})" }); } bool aResult = Version.TryParse(manifest.TargetAPIVersion, out Version _); if (!aResult) { return(new AttemptResult() { Message = $"APIバージョンの形式が不正です。({manifest.TargetAPIVersion})" }); } foreach (string permission in manifest.Permissions) { if (!this.permissionsHandler.IsKnownPermission(permission)) { return(new AttemptResult() { Message = $"不明な権限です。({permission})" }); } } foreach (string host in manifest.HostPermissions) { if (!this.permissionsHandler.IsValidUrlPattern(host)) { return(new AttemptResult() { Message = $"不正なホストです。({host})" }); } } return(new AttemptResult() { IsSucceeded = true }); }