Skip to content

Commit d5739bb

Browse files
committed
Merge branch 'finbourne-dev' into dev
2 parents 25922ce + 40b9416 commit d5739bb

17 files changed

+356
-323
lines changed

src/RestSharp/Parameters/UrlSegmentParameter.cs

Lines changed: 4 additions & 2 deletions
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

@@ -26,10 +27,11 @@ public partial record UrlSegmentParameter : NamedParameter {
2627
/// <param name="name">Parameter name</param>
2728
/// <param name="value">Parameter value</param>
2829
/// <param name="encode">Optional: encode the value, default is true</param>
29-
public UrlSegmentParameter(string name, string value, bool encode = true)
30+
/// <param name="replaceEncodedSlash">Optional: whether to replace all %2f and %2F in the parameter value with '/', default is true</param>
31+
public UrlSegmentParameter(string name, string value, bool encode = true, bool replaceEncodedSlash = true)
3032
: base(
3133
name,
32-
RegexPattern.Replace(Ensure.NotEmptyString(value, nameof(value)), "/"),
34+
value.IsEmpty() ? value : replaceEncodedSlash ? RegexPattern.Replace(value, "/") : value,
3335
ParameterType.UrlSegment,
3436
encode
3537
) { }
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)