Skip to content

Commit 3d587f2

Browse files
committed
Use package releases for resource repos when available (e.g. NL-nl)
1 parent 409d480 commit 3d587f2

1 file changed

Lines changed: 58 additions & 50 deletions

File tree

Server/Core/Services/Github/GithubController.cs

Lines changed: 58 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Connect.LanguagePackManager.Core.Models.PackageLinks;
44
using Connect.LanguagePackManager.Core.Repositories;
55
using Connect.LanguagePackManager.Core.Services.Packages;
6-
using DotNetNuke.UI.UserControls;
76
using System;
87
using System.IO;
98
using System.Linq;
@@ -47,63 +46,72 @@ public static void CheckPackage(PackageLink package)
4746

4847
public static void CheckResourcesRepo(PackageLink package)
4948
{
50-
var repo = GithubService.GetRepo(package.OrgName, package.RepoName);
51-
var defaultBranch = repo.DefaultBranch;
52-
var zipUrl = $"https://github.com/{package.OrgName}/{package.RepoName}/archive/refs/heads/{defaultBranch}.zip";
53-
54-
using (var client = new System.Net.WebClient())
49+
var lastCommit = GithubService.GetLastCommit(package.OrgName, package.RepoName);
50+
if (lastCommit != null && lastCommit.Details != null && lastCommit.Details.Committer != null)
5551
{
56-
using (var strm = client.OpenRead(zipUrl))
52+
var baseVersion = string.IsNullOrEmpty(package.LastDownloadedVersion) ? "00.00.00" : package.LastDownloadedVersion;
53+
var githubVersions = GithubService.GetReleases(package.OrgName, package.RepoName)
54+
.Where(gp => gp.Draft == false && gp.Prerelease == false)
55+
.OrderBy(p => p.Published);
56+
if (githubVersions.Any())
5757
{
58-
var unzipResult = ZipHelper.Unzip(strm, "", true);
59-
var manifest = new LanguagePackManifest(unzipResult, package.ModuleId);
60-
Globals.SaveObject($@"D:\tmp{package.RepoName}.json", unzipResult);
61-
manifest.Process(true, -1);
62-
63-
try
58+
// this repo posts releases
59+
foreach (var githubVersion in githubVersions.Where(gp => string.IsNullOrEmpty(package.LastDownloadedVersion) || baseVersion.IsSmallerThan(gp.TagName.ParseVersion().ToNormalizedFormat())))
6460
{
65-
//Directory.Delete(unzipResult.UnzipDirectory, true);
61+
foreach (var download in githubVersion.Assets)
62+
{
63+
var m = Regex.Match(download.Name, package.AssetRegex);
64+
if (m.Success)
65+
{
66+
var result = GetGithubPackage(download.DownloadUrl);
67+
if (!string.IsNullOrEmpty(result))
68+
{
69+
var unzipResult = ZipHelper.Unzip(result, "", true);
70+
var manifest = new LanguagePackManifest(unzipResult, package.ModuleId);
71+
manifest.Process(true, -1);
72+
73+
try
74+
{
75+
Directory.Delete(unzipResult.UnzipDirectory, true);
76+
}
77+
catch
78+
{
79+
}
80+
81+
package.LastDownloadedVersion = githubVersion.TagName.ParseVersion().ToNormalizedFormat();
82+
}
83+
}
84+
}
6685
}
67-
catch
86+
}
87+
else
88+
{
89+
// this repo doesn't post releases but just keeps an updated list of resources
90+
var repo = GithubService.GetRepo(package.OrgName, package.RepoName);
91+
var defaultBranch = repo.DefaultBranch;
92+
var zipUrl = $"https://github.com/{package.OrgName}/{package.RepoName}/archive/refs/heads/{defaultBranch}.zip";
93+
94+
using (var client = new System.Net.WebClient())
6895
{
96+
using (var strm = client.OpenRead(zipUrl))
97+
{
98+
var unzipResult = ZipHelper.Unzip(strm, "", true);
99+
var manifest = new LanguagePackManifest(unzipResult, package.ModuleId);
100+
manifest.Process(true, -1);
101+
102+
try
103+
{
104+
Directory.Delete(unzipResult.UnzipDirectory, true);
105+
}
106+
catch
107+
{
108+
}
109+
}
69110
}
70111
}
71112
}
72-
73-
//var unzipResult = ZipHelper.Unzip(this.ControllerContext.HttpContext.Request.Files[0].InputStream, "", true);
74-
//var manifest = new LanguagePackManifest(unzipResult, ModuleContext.ModuleId);
75-
//manifest.Process(generic, User.UserID);
76-
77-
//try
78-
//{
79-
// Directory.Delete(unzipResult.UnzipDirectory, true);
80-
//}
81-
//catch
82-
//{
83-
//}
84-
85-
86-
//var lastCommit = GithubService.GetLastCommit(package.OrgName, package.RepoName);
87-
//if (lastCommit != null && lastCommit.Details != null && lastCommit.Details.Committer != null)
88-
//{
89-
// var lastCommitDate = lastCommit.Details.Committer.Date;
90-
// if (package.LastChecked == null || lastCommitDate > package.LastChecked)
91-
// {
92-
// var tree = GithubService.GetFileTree(package.OrgName, package.RepoName, lastCommit.Sha);
93-
// if (tree != null && tree.Files != null)
94-
// {
95-
// var allFiles = tree.Files.Where(f => f.Type == "blob").ToList();
96-
// var dnnFile = allFiles.Where(f => f.Path.ToLowerInvariant().EndsWith(".dnn")).FirstOrDefault();
97-
// if (dnnFile != null)
98-
// {
99-
// var manifest = new LanguagePackManifest(tree, dnnFile, package.ModuleId);
100-
// manifest.Process(true, -1);
101-
// }
102-
// }
103-
// }
104-
//}
105-
//package.LastChecked = DateTime.Now;
106-
//PackageLinkRepository.Instance.UpdatePackageLink(package.GetPackageLinkBase(), -1);
113+
package.LastChecked = DateTime.Now;
114+
PackageLinkRepository.Instance.UpdatePackageLink(package.GetPackageLinkBase(), -1);
107115
}
108116

109117
public static string GetGithubPackage(string url)

0 commit comments

Comments
 (0)