public ManifestContainer(string fileName, IEnumerable <byte> data, SignatureFileRef signatureFileRef, ManifestSpec manifestSpec) { FileName = fileName; Data = data ?? Enumerable.Empty <byte>(); SignatureFileRef = signatureFileRef; ManifestSpec = manifestSpec; }
public Manifest(dynamic desc, string version = null, string type = "url", string repositoryBasePath = "", bool checkNames = true) { if (type == "url") { if (desc is string) { this.ManifestSpec = ManifestFromYaml(desc); } else { this.ManifestSpec = desc; } this.ManifestPath = "url"; } else { string yml = File.ReadAllText(desc); this.ManifestSpec = ManifestFromYaml(yml); this.ManifestPath = desc; } this.Versions = new HashSet <string>(); if (this.ManifestSpec.ContainsKey("Versions")) { foreach (var ver in this.ManifestSpec["Versions"]) { Versions.Add(ver.ToString()); } } this.Versions.Add(this.ManifestSpec["Version"].ToString()); this.CartridgeVersion = this.ManifestSpec["Cartridge-Version"].ToString(); if (!string.IsNullOrEmpty(version)) { this.Version = version; this.ManifestSpec["Version"] = this.Version; } else { this.Version = ManifestSpec["Version"]; } this.CartridgeVendor = this.ManifestSpec["Cartridge-Vendor"]; this.Name = ManifestSpec["Name"]; this.ShortName = ManifestSpec["Cartridge-Short-Name"]; this.Categories = ManifestSpec["Categories"] ?? new List <object>() { }; this.isDeployable = this.Categories.Contains("web_framework"); this.isWebProxy = this.Categories.Contains("web_proxy"); string repositoryDirectory = string.Format("{0}-{1}", CartridgeVendor.ToLower(), this.Name); this.RepositoryPath = Path.Combine(repositoryBasePath, repositoryDirectory, CartridgeVersion); if (((Dictionary <object, object>)ManifestSpec).ContainsKey("Source-Url")) { if (!Uri.IsWellFormedUriString(ManifestSpec["Source-Url"], UriKind.Absolute)) { throw new Exception("Source-Url is not valid"); } SourceUrl = ManifestSpec["Source-Url"]; SourceMD5 = ManifestSpec.ContainsKey("Source-Md5") ? ManifestSpec["Source-Md5"] : null; } else { if (ManifestPath == "url") { throw new MissingFieldException("Source-Url is required in manifest to obtain cartridge via URL", "Source-Url"); } } this.Endpoints = new List <Endpoint>(); if (((Dictionary <object, object>)ManifestSpec).ContainsKey("Endpoints")) { if (ManifestSpec["Endpoints"] is List <object> ) { foreach (dynamic ep in ManifestSpec["Endpoints"]) { this.Endpoints.Add(Endpoint.FromDescriptor(ep, this.ShortName.ToUpper())); } } } this.isWebProxy = Categories.Contains("web_framework"); }
protected AbstractManifest(ManifestSpec manifestSpec) { this._manifestSpec = manifestSpec; }