Skip to content

Commit 57351d3

Browse files
committed
Detect redirects without DownloadText
1 parent d452661 commit 57351d3

File tree

8 files changed

+17
-17
lines changed

8 files changed

+17
-17
lines changed

Netkan/Processors/Inflator.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ internal Inflator(bool overwriteCache,
4242
IGame game,
4343
NetFileCache cache)
4444
: this(githubToken, gitlabToken,
45-
userAgent, prerelease, game,
45+
prerelease, game,
4646
cache,
4747
new CachingHttpService(cache, overwriteCache, userAgent),
4848
new ModuleService(game),
@@ -52,7 +52,6 @@ internal Inflator(bool overwriteCache,
5252

5353
internal Inflator(string? githubToken,
5454
string? gitlabToken,
55-
string? userAgent,
5655
bool? prerelease,
5756
IGame game,
5857
NetFileCache cache,
@@ -65,7 +64,7 @@ internal Inflator(string? githubToken,
6564
this.http = http;
6665
ckanValidator = new CkanValidator(http, moduleService, game, githubToken);
6766
transformer = new NetkanTransformer(http, fileService, moduleService,
68-
githubToken, gitlabToken, userAgent,
67+
githubToken, gitlabToken,
6968
prerelease, game, netkanValidator);
7069
}
7170

Netkan/Services/CachingHttpService.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,11 @@ public void ClearRequestedURLs()
149149
_requestedURLs.Clear();
150150
}
151151

152-
public Uri? ResolveRedirect(Uri url, string? userAgent)
153-
=> Net.ResolveRedirect(url, userAgent);
152+
public Uri? ResolveRedirect(Uri url)
153+
=> Net.ResolveRedirect(url, _userAgent);
154+
155+
public bool HasRedirect(Uri url)
156+
=> ResolveRedirect(url) != url;
154157

155158
private readonly NetFileCache _cache;
156159
private readonly string? _userAgent;

Netkan/Services/IHttpService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ internal interface IHttpService
99
string? DownloadModule(Metadata metadata);
1010
string? DownloadText(Uri url, string? authToken = null, string? mimeType = null);
1111

12-
Uri? ResolveRedirect(Uri url, string? userAgent);
12+
Uri? ResolveRedirect(Uri url);
13+
bool HasRedirect(Uri url);
1314

1415
IEnumerable<Uri> RequestedURLs { get; }
1516
void ClearRequestedURLs();

Netkan/Sources/Github/GithubApi.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ public List<GithubUser> getOrgMembers(GithubUser organization)
108108
}
109109

110110
private bool ActuallyHasWiki(GithubRef reference)
111-
// If no wiki pages have been created, the /wiki route redirects and this is null
112-
=> _http.DownloadText(new Uri($"https://github.com/{reference.Account}/{reference.Project}/wiki")) != null;
111+
// If no wiki pages have been created, the /wiki route redirects
112+
=> !_http.HasRedirect(new Uri($"https://github.com/{reference.Account}/{reference.Project}/wiki"));
113113

114114
/// <summary>
115115
/// Download a URL via the GitHubAPI.

Netkan/Transformers/HttpTransformer.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ namespace CKAN.NetKAN.Transformers
1313
/// </summary>
1414
internal sealed class HttpTransformer : ITransformer
1515
{
16-
public HttpTransformer(IHttpService httpSvc, string? userAgent = null)
16+
public HttpTransformer(IHttpService httpSvc)
1717
{
18-
this.userAgent = userAgent;
1918
http = httpSvc;
2019
}
2120

@@ -30,7 +29,7 @@ public IEnumerable<Metadata> Transform(Metadata metadata, TransformOptions opts)
3029

3130
if (Uri.IsWellFormedUriString(metadata.Kref.Id, UriKind.Absolute))
3231
{
33-
var resolvedUri = http.ResolveRedirect(new Uri(metadata.Kref.Id), userAgent);
32+
var resolvedUri = http.ResolveRedirect(new Uri(metadata.Kref.Id));
3433

3534
Log.InfoFormat("URL {0} resolved to {1}", metadata.Kref.Id, resolvedUri);
3635

@@ -58,7 +57,6 @@ public IEnumerable<Metadata> Transform(Metadata metadata, TransformOptions opts)
5857
yield return metadata;
5958
}
6059

61-
private readonly string? userAgent;
6260
private readonly IHttpService http;
6361

6462
private static readonly ILog Log = LogManager.GetLogger(typeof(HttpTransformer));

Netkan/Transformers/NetkanTransformer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public NetkanTransformer(IHttpService http,
2525
IModuleService moduleService,
2626
string? githubToken,
2727
string? gitlabToken,
28-
string? userAgent,
2928
bool? prerelease,
3029
IGame game,
3130
IValidator validator)
@@ -45,7 +44,7 @@ public NetkanTransformer(IHttpService http,
4544
new GitlabTransformer(glApi),
4645
new GiteaTransformer(giteaAPi),
4746
new SourceForgeTransformer(sfApi),
48-
new HttpTransformer(http, userAgent),
47+
new HttpTransformer(http),
4948
new JenkinsTransformer(new JenkinsApi(http)),
5049
new AvcKrefTransformer(http, ghApi),
5150
new InternalCkanTransformer(http, moduleService),

Tests/NetKAN/Processors/InflatorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void Inflate_WithTestNetkan_Inflates()
2929
var game = new KerbalSpaceProgram();
3030
var modSvc = new ModuleService(game);
3131
var fileSvc = new FileService(cache);
32-
var sut = new Inflator(null, null, null, null,
32+
var sut = new Inflator(null, null, null,
3333
game, cache, http.Object, modSvc, fileSvc);
3434
var filename = TestData.TestNetkanPath();
3535
var netkans = YamlExtensions.Parse(TestData.TestNetkanContents())
@@ -91,7 +91,7 @@ public void ValidateCkan_ValidModule_DoesNotThrow()
9191
var http = new Mock<IHttpService>();
9292
var modSvc = new ModuleService(game);
9393
var fileSvc = new FileService(cache);
94-
var sut = new Inflator(null, null, null, null,
94+
var sut = new Inflator(null, null, null,
9595
game, cache, http.Object, modSvc, fileSvc);
9696
var ckans = YamlExtensions.Parse(TestData.DogeCoinPlugin())
9797
.Select(yaml => new Metadata(yaml))

Tests/NetKAN/Transformers/HttpTransformerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void Transform_HttpKref_ResolvesRedirect()
4545
{
4646
// Arrange
4747
var http = new Mock<IHttpService>();
48-
http.Setup(h => h.ResolveRedirect(It.IsAny<Uri>(), It.IsAny<string?>()))
48+
http.Setup(h => h.ResolveRedirect(It.IsAny<Uri>()))
4949
.Returns(new Uri("https://fake-web-site.com/redirected"));
5050
var sut = new HttpTransformer(http.Object);
5151
var opts = new TransformOptions(1, null, null, null, false, null);

0 commit comments

Comments
 (0)