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

leonov-anton / QueryUrlParams / 15303850882

28 May 2025 03:11PM UTC coverage: 78.364% (+21.0%) from 57.326%
15303850882

push

github

leonov-anton
Merge branch 'main' of https://github.com/leonov-anton/QueryUrlParams

110 of 182 branches covered (60.44%)

Branch coverage included in aggregate %.

647 of 784 relevant lines covered (82.53%)

7.95 hits per line

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

90.36
/src/QueryUrlParams/Helpers/QueryParamStringBuilder.cs
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel.Design;
4
using System.Data.SqlTypes;
5
using System.Globalization;
6
using System.IO;
7
using System.Linq;
8
using System.Text;
9
using System.Text.Encodings.Web;
10

11
namespace QueryUrlParams.Helpers
12
{
13
    public static class QueryParamStringBuilder
14
    {
15
        public static void AppendParam<T>(StringBuilder sb, string key, T value)
16
        {
53✔
17
            switch (value)
53!
18
            {
19
                case null:
20
                    return;
32✔
21

22
                case string s:
23
                    AppendParam(sb, key, s);
14✔
24
                    break;
14✔
25

26
                case bool b:
27
                    AppendParam(sb, key, b ? "true" : "false");
3✔
28
                    break;
3✔
29

30
                case DateTime dateTime:
31
                    AppendParam(sb, key, dateTime.ToString("o", CultureInfo.InvariantCulture));
×
32
                    break;
×
33

34
                case IFormattable formattable:
35
                    AppendParam(sb, key, formattable.ToString(null, CultureInfo.InvariantCulture));
4✔
36
                    break;
4✔
37

38
                default:
39
                    AppendParam(sb, key, value.ToString());
×
40
                    break;
×
41
            }
42
        }
53✔
43

44
        public static void AppendParam<TEnum>(StringBuilder sb, string key, TEnum? value, bool isString = false) where TEnum : struct, Enum
45
        {
2✔
46
            if (value == null) return;
2✔
47

48
            if (isString)
2✔
49
                AppendParam(sb, key, value.ToString());
1✔
50
            else  
51
                AppendParam(sb, key, Convert.ToInt64(value).ToString());
1✔
52
        }
2✔
53

54
        public static void AppendParams<T>(StringBuilder sb, string key, IEnumerable<T> values)
55
        {
5✔
56
            if (values == null || !values.Any()) return;
9✔
57

58
            foreach (var value in values)
7✔
59
            {
2✔
60
                if (value == null) continue;
2✔
61
                AppendParam(sb, key, value);
2✔
62
            }
2✔
63
        }
5✔
64

65
        public static void AppendParams<TKey, TValue>(StringBuilder sb, string key, IDictionary<TKey, TValue> dict)
66
        {
5✔
67
            if (dict == null || !dict.Keys.Any()) return;
9✔
68
            
69
            foreach (var kvp in dict)
7✔
70
            {
2✔
71
                if (kvp.Key == null || kvp.Value == null) continue;
2!
72
                AppendParam(sb, $"{kvp.Key}", kvp.Value);
2✔
73
            }
2✔
74
        }
5✔
75

76
        private static void AppendParam(StringBuilder sb, string key, string value)
77
        {
23✔
78
            if (string.IsNullOrEmpty(value))
23✔
79
                return;
×
80

81
            if (sb.Length > 0)
23✔
82
                sb.Append("&");
16✔
83

84
            sb.Append(key);
23✔
85
            sb.Append("=");
23✔
86
            sb.Append(Uri.EscapeDataString(value));
23✔
87
        }
23✔
88
    }
89
}
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