Skip to content

Commit 40b9416

Browse files
committed
Allow adding empty value for URL segments
1 parent ba2ebac commit 40b9416

17 files changed

+330
-322
lines changed

src/RestSharp/Parameters/UrlSegmentParameter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
using System.Text.RegularExpressions;
16+
using RestSharp.Extensions;
1617

1718
namespace RestSharp;
1819

@@ -30,7 +31,7 @@ public partial record UrlSegmentParameter : NamedParameter {
3031
public UrlSegmentParameter(string name, string value, bool encode = true, bool replaceEncodedSlash = true)
3132
: base(
3233
name,
33-
replaceEncodedSlash ? RegexPattern.Replace(Ensure.NotEmptyString(value, nameof(value)), "/") : value,
34+
value.IsEmpty() ? value : replaceEncodedSlash ? RegexPattern.Replace(value, "/") : value,
3435
ParameterType.UrlSegment,
3536
encode
3637
) { }
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
namespace RestSharp.Tests.Headers;
2+
3+
public class DefaultHeaderTests {
4+
const string BaseUrl = "http://localhost:8888/";
5+
6+
[Fact]
7+
public void AddDefaultHeadersUsingDictionary() {
8+
var headers = new Dictionary<string, string> {
9+
{ KnownHeaders.ContentType, ContentType.Json },
10+
{ KnownHeaders.Accept, ContentType.Json },
11+
{ KnownHeaders.ContentEncoding, "gzip, deflate" }
12+
};
13+
14+
var expected = headers.Select(x => new HeaderParameter(x.Key, x.Value));
15+
16+
using var client = new RestClient(BaseUrl);
17+
client.AddDefaultHeaders(headers);
18+
19+
var actual = client.DefaultParameters.Select(x => x as HeaderParameter);
20+
expected.Should().BeSubsetOf(actual);
21+
}
22+
23+
}

test/RestSharp.Tests/AddRangeTests.cs renamed to test/RestSharp.Tests/Headers/HeaderRangeTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
namespace RestSharp.Tests;
1+
namespace RestSharp.Tests.Parameters;
22

3-
public class AddRangeTests {
3+
public class HeaderRangeTests {
44
[Fact]
55
public async Task ShouldParseOutLongRangeSpecifier() {
66
using var restClient = new RestClient("http://localhost");

test/RestSharp.Tests/ObjectParameterTests.ArrayData.cs renamed to test/RestSharp.Tests/Parameters/ObjectParameterTests.ArrayData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace RestSharp.Tests;
1+
namespace RestSharp.Tests.Parameters;
22

33
public partial class ObjectParameterTests {
44
sealed record ArrayData<TEnumerable>([property: RequestProperty(ArrayQueryType = RequestArrayQueryType.ArrayParameters)] TEnumerable Array) where TEnumerable : notnull;

test/RestSharp.Tests/ObjectParameterTests.CsvData.cs renamed to test/RestSharp.Tests/Parameters/ObjectParameterTests.CsvData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace RestSharp.Tests;
1+
namespace RestSharp.Tests.Parameters;
22

33
public partial class ObjectParameterTests {
44
sealed record CsvData<TEnumerable>([property: RequestProperty(ArrayQueryType = RequestArrayQueryType.CommaSeparated)] TEnumerable Csv) where TEnumerable : notnull;

test/RestSharp.Tests/ObjectParameterTests.FormattedData.cs renamed to test/RestSharp.Tests/Parameters/ObjectParameterTests.FormattedData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace RestSharp.Tests;
1+
namespace RestSharp.Tests.Parameters;
22

33
public partial class ObjectParameterTests {
44
sealed record FormattedData<TDateTime>([property: RequestProperty(Format = "hh:mm tt")] TDateTime FormattedParameter) where TDateTime : notnull;

test/RestSharp.Tests/ObjectParameterTests.NamedData.cs renamed to test/RestSharp.Tests/Parameters/ObjectParameterTests.NamedData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace RestSharp.Tests;
1+
namespace RestSharp.Tests.Parameters;
22

33
public partial class ObjectParameterTests {
44
sealed record NamedData([property: RequestProperty(Name = "CustomName")] object NamedParameter);

test/RestSharp.Tests/ObjectParameterTests.cs renamed to test/RestSharp.Tests/Parameters/ObjectParameterTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.Collections;
22
using System.Globalization;
33

4-
namespace RestSharp.Tests;
4+
namespace RestSharp.Tests.Parameters;
55

66
public partial class ObjectParameterTests {
77
public ObjectParameterTests() => Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

0 commit comments

Comments
 (0)