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

moconnell / yolo / 28297673524

27 Jun 2026 06:16PM UTC coverage: 71.558% (-11.4%) from 82.93%
28297673524

Pull #131

github

web-flow
Merge a1924d0f3 into 58d55311c
Pull Request #131: Feat: Telemetry

351 of 445 branches covered (78.88%)

Branch coverage included in aggregate %.

58 of 622 new or added lines in 12 files covered. (9.32%)

4 existing lines in 2 files now uncovered.

2721 of 3848 relevant lines covered (70.71%)

23.05 hits per line

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

0.0
/src/YoloFunk/Infrastructure/HttpQueryParameters.cs
1
namespace YoloFunk.Infrastructure;
2

3
internal sealed class HttpQueryParameters
4
{
5
    private readonly Dictionary<string, string[]> _values;
6

NEW
7
    private HttpQueryParameters(Dictionary<string, string[]> values)
×
NEW
8
    {
×
NEW
9
        _values = values;
×
NEW
10
    }
×
11

12
    public static HttpQueryParameters Parse(Uri url)
NEW
13
    {
×
NEW
14
        var values = new Dictionary<string, List<string>>(StringComparer.OrdinalIgnoreCase);
×
NEW
15
        var query = url.Query.TrimStart('?');
×
NEW
16
        foreach (var pair in query.Split('&', StringSplitOptions.RemoveEmptyEntries))
×
NEW
17
        {
×
NEW
18
            var parts = pair.Split('=', 2);
×
NEW
19
            var key = Uri.UnescapeDataString(parts[0].Replace("+", " "));
×
NEW
20
            if (string.IsNullOrWhiteSpace(key))
×
NEW
21
                continue;
×
22

NEW
23
            var value = parts.Length > 1
×
NEW
24
                ? Uri.UnescapeDataString(parts[1].Replace("+", " "))
×
NEW
25
                : string.Empty;
×
26

NEW
27
            if (!values.TryGetValue(key, out var list))
×
NEW
28
            {
×
NEW
29
                list = [];
×
NEW
30
                values[key] = list;
×
NEW
31
            }
×
32

NEW
33
            list.Add(value);
×
NEW
34
        }
×
35

NEW
36
        return new HttpQueryParameters(
×
NEW
37
            values.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.ToArray(), StringComparer.OrdinalIgnoreCase));
×
NEW
38
    }
×
39

40
    public string? GetString(string name)
NEW
41
    {
×
NEW
42
        return _values.TryGetValue(name, out var values)
×
NEW
43
            ? values.FirstOrDefault(value => !string.IsNullOrWhiteSpace(value))
×
NEW
44
            : null;
×
NEW
45
    }
×
46

47
    public int GetInt32(string name, int defaultValue, int min, int max)
NEW
48
    {
×
NEW
49
        var value = GetString(name);
×
NEW
50
        if (!int.TryParse(value, out var parsed))
×
NEW
51
            return defaultValue;
×
52

NEW
53
        return Math.Clamp(parsed, min, max);
×
NEW
54
    }
×
55

56
    public DateTimeOffset? GetDateTimeOffset(string name)
NEW
57
    {
×
NEW
58
        var value = GetString(name);
×
NEW
59
        return DateTimeOffset.TryParse(value, out var parsed) ? parsed : null;
×
NEW
60
    }
×
61
}
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