public void Process(JObject package, string registration, List<JObject> dependencies, List<string> targetFrameworks) { GalleryExportPackage export = new GalleryExportPackage { Package = package, Id = registration, Dependencies = dependencies, TargetFrameworks = targetFrameworks }; _currentBatch.Add(export); if (_currentBatch.Count == _batchSize) { SubmitCurrentBatch(); _currentBatch.Clear(); } }
static JObject CreateContent(string resourceUri, GalleryExportPackage export) { IDictionary<string, string> Lookup = new Dictionary<string, string> { { "Title", "title" }, { "Version", "version" }, { "Description", "description" }, { "Summary", "summary" }, { "Authors", "authors" }, { "LicenseUrl", "licenseUrl" }, { "ProjectUrl", "projectUrl" }, { "IconUrl", "iconUrl" }, { "RequireLicenseAcceptance", "requireLicenseAcceptance"}, { "Language", "language" }, { "ReleaseNotes", "releaseNotes"} }; JObject obj = new JObject(); obj.Add("url", resourceUri); obj.Add("@type", "Package"); obj.Add("id", export.Id); foreach (JProperty property in export.Package.Properties()) { if (property.Name == "Tags") { char[] trimChar = { ',', ' ', '\t', '|', ';' }; IEnumerable<string> fields = property.Value.ToString() .Split(trimChar) .Select((w) => w.Trim(trimChar)) .Where((w) => w.Length > 0); JArray tagArray = new JArray(); foreach (string field in fields) { tagArray.Add(field); } obj.Add("tag", tagArray); } else { string name; if (Lookup.TryGetValue(property.Name, out name)) { obj.Add(name, property.Value); } } } if (export.Dependencies != null) { string dependenciesUri = resourceUri + "#dependencies"; JObject dependenciesObj = new JObject(); dependenciesObj.Add("url", dependenciesUri); JArray dependencyGroups = new JArray(); foreach (IGrouping<JToken, JObject> group in export.Dependencies.GroupBy(d => d["TargetFramework"])) { string targetFramework = group.Key.ToString(); string dependencyGroupUri = dependenciesUri + "/group"; JObject dependencyGroup = new JObject(); if (targetFramework != "") { dependencyGroup.Add("targetFramework", targetFramework); dependencyGroupUri = dependencyGroupUri + "/" + targetFramework.ToLowerInvariant(); } dependencyGroup.Add("url", dependencyGroupUri); JArray dependencyGroupDependencies = new JArray(); foreach (JObject value in group) { JObject dependencyGroupDependency = new JObject(); string id = value["Id"].ToString().ToLowerInvariant(); string dependencyGroupDependencyUri = dependencyGroupUri + "/" + id; dependencyGroupDependency.Add("url", dependencyGroupDependencyUri); dependencyGroupDependency.Add("id", id); dependencyGroupDependency.Add("range", value["VersionSpec"].ToString()); dependencyGroupDependencies.Add(dependencyGroupDependency); } dependencyGroup.Add("dependency", dependencyGroupDependencies); dependencyGroups.Add(dependencyGroup); } dependenciesObj.Add("group", dependencyGroups); obj.Add("dependencies", dependenciesObj); } if (export.TargetFrameworks != null) { JArray array = new JArray(); foreach (string targetFramework in export.TargetFrameworks) { array.Add(targetFramework); } obj.Add("targetFramework", array); } return obj; }
public GalleryExportCatalogItem(GalleryExportPackage export) { _export = export; _identity = (export.Id + "." + export.Package["Version"]).ToLowerInvariant(); }