• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

KSP-CKAN / CKAN / 15655379223

14 Jun 2025 07:26PM UTC coverage: 27.151% (-3.2%) from 30.327%
15655379223

push

github

HebaruSan
Merge #4392 Writethrough when saving files, add Netkan tests

3702 of 12085 branches covered (30.63%)

Branch coverage included in aggregate %.

19 of 32 new or added lines in 18 files covered. (59.38%)

6 existing lines in 6 files now uncovered.

8041 of 31165 relevant lines covered (25.8%)

0.53 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

76.92
/Netkan/Transformers/HttpTransformer.cs
1
using System;
2
using System.Collections.Generic;
3

4
using log4net;
5

6
using CKAN.NetKAN.Model;
7
using CKAN.NetKAN.Services;
8

9
namespace CKAN.NetKAN.Transformers
10
{
11
    /// <summary>
12
    /// An <see cref="ITransformer"/> that looks up data from an arbitrary HTTP endpoint.
13
    /// </summary>
14
    internal sealed class HttpTransformer : ITransformer
15
    {
16
        public HttpTransformer(IHttpService httpSvc, string? userAgent = null)
2✔
17
        {
2✔
18
            this.userAgent = userAgent;
2✔
19
            http           = httpSvc;
2✔
20
        }
2✔
21

NEW
22
        public string Name => "http";
×
23

24
        public IEnumerable<Metadata> Transform(Metadata metadata, TransformOptions opts)
25
        {
2✔
26
            if (metadata.Kref?.Source == "http")
2✔
27
            {
2✔
28
                Log.InfoFormat("Executing HTTP transformation with {0}", metadata.Kref);
2✔
29
                Log.DebugFormat("Input metadata:{0}{1}", Environment.NewLine, metadata.AllJson);
2✔
30

31
                if (Uri.IsWellFormedUriString(metadata.Kref.Id, UriKind.Absolute))
2!
32
                {
2✔
33
                    var resolvedUri = http.ResolveRedirect(new Uri(metadata.Kref.Id), userAgent);
2✔
34

35
                    Log.InfoFormat("URL {0} resolved to {1}", metadata.Kref.Id, resolvedUri);
2✔
36

37
                    if (resolvedUri != null)
2!
38
                    {
2✔
39
                        var json = metadata.Json();
2✔
40
                        json.Remove("$kref");
2✔
41
                        json["download"] = resolvedUri.ToString();
2✔
42

43
                        Log.DebugFormat("Transformed metadata:{0}{1}", Environment.NewLine, json);
2✔
44

45
                        yield return new Metadata(json);
2✔
46
                        yield break;
×
47
                    }
48
                    else
49
                    {
×
50
                        throw new Kraken("Could not resolve HTTP $kref URL, exceeded number of redirects.");
×
51
                    }
52
                }
53
                else
54
                {
×
55
                    throw new Kraken("Invalid URL in HTTP $kref: " + metadata.Kref.Id);
×
56
                }
57
            }
58
            yield return metadata;
2✔
59
        }
×
60

61
        private readonly string?      userAgent;
62
        private readonly IHttpService http;
63

64
        private static readonly ILog Log = LogManager.GetLogger(typeof(HttpTransformer));
2✔
65
    }
66
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc