diff --git a/Activout.RestClient.Test/MultipartFormDataContentTest.cs b/Activout.RestClient.Test/MultipartFormDataContentTest.cs index dd40394..d381093 100644 --- a/Activout.RestClient.Test/MultipartFormDataContentTest.cs +++ b/Activout.RestClient.Test/MultipartFormDataContentTest.cs @@ -82,16 +82,8 @@ await client.SendFormInForm(new FormModel MyString = "foobar" }, new[] { - new Part - { - Content = "foo", - FileName = "foo.txt" - }, - new Part - { - Content = "bar", - FileName = "bar.txt" - } + new Part(Content: "foo", FileName: "foo.txt"), + new Part(Content: "bar", FileName: "bar.txt") }); // Assert diff --git a/Activout.RestClient/IRestClientFactory.cs b/Activout.RestClient/IRestClientFactory.cs index 98a0efd..141bd6b 100644 --- a/Activout.RestClient/IRestClientFactory.cs +++ b/Activout.RestClient/IRestClientFactory.cs @@ -1,8 +1,6 @@ -#nullable disable -namespace Activout.RestClient +namespace Activout.RestClient; + +public interface IRestClientFactory { - public interface IRestClientFactory - { - IRestClientBuilder CreateBuilder(); - } + IRestClientBuilder CreateBuilder(); } \ No newline at end of file diff --git a/Activout.RestClient/Implementation/RequestHandler.cs b/Activout.RestClient/Implementation/RequestHandler.cs index 2b5ae82..6db511b 100644 --- a/Activout.RestClient/Implementation/RequestHandler.cs +++ b/Activout.RestClient/Implementation/RequestHandler.cs @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Net; using System.Net.Http; using System.Reflection; @@ -16,6 +15,8 @@ namespace Activout.RestClient.Implementation; +internal record HttpContentPart(HttpContent Content, string Name, string? FileName); + internal class RequestHandler { // https://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html#sec7.2.1 @@ -210,7 +211,7 @@ private void PrepareRequestMessage(HttpRequestMessage request) var routeParams = new Dictionary(); var queryParams = new List(); var formParams = new List>(); - var partParams = new List>(); + var partParams = new List(); var cancellationToken = GetParams(args, routeParams, queryParams, formParams, headers, partParams); var requestUriString = ExpandTemplate(routeParams); @@ -251,7 +252,7 @@ private void PrepareRequestMessage(HttpRequestMessage request) } private static MultipartFormDataContent CreateMultipartFormDataContent( - IEnumerable> partParams) + IEnumerable partParams) { var content = new MultipartFormDataContent(); foreach (var part in partParams) @@ -293,7 +294,7 @@ private CancellationToken GetParams( List queryParams, List> formParams, List> headers, - List> parts) + List parts) { var cancellationToken = CancellationToken.None; @@ -430,7 +431,7 @@ private CancellationToken GetParams( return cancellationToken; } - private IEnumerable> GetPartNameAndHttpContent(PartParamAttribute partAttribute, + private IEnumerable GetPartNameAndHttpContent(PartParamAttribute partAttribute, string parameterName, object? rawValue) { @@ -439,19 +440,17 @@ private IEnumerable> GetPartNameAndHttpContent(PartParamAttrib if (rawValue is Part part) { - rawValue = part.InternalContent; + rawValue = part.Content; partName = part.Name; fileName = part.FileName; } - if (rawValue is { }) + if (rawValue is not null) { - yield return new Part - { - Content = GetPartHttpContent(partAttribute, rawValue), - Name = partName ?? partAttribute.Name ?? parameterName, - FileName = fileName ?? partAttribute.FileName - }; + yield return new HttpContentPart( + Content: GetPartHttpContent(partAttribute, rawValue), + Name: partName ?? partAttribute.Name ?? parameterName, + FileName: fileName ?? partAttribute.FileName); } } @@ -481,7 +480,8 @@ private static HttpContent GetHttpContent(ISerializer serializer, object? value, } - private async Task SendRequestAndHandleResponse(HttpRequestMessage request, CancellationToken cancellationToken) + private async Task SendRequestAndHandleResponse(HttpRequestMessage request, + CancellationToken cancellationToken) { var response = await SendRequest(request, cancellationToken); return await HandleResponse(request, response); diff --git a/Activout.RestClient/Part.cs b/Activout.RestClient/Part.cs index 8a8db93..fffafff 100644 --- a/Activout.RestClient/Part.cs +++ b/Activout.RestClient/Part.cs @@ -1,19 +1,3 @@ -#nullable disable -namespace Activout.RestClient -{ - public class Part - { - internal object InternalContent { get; set; } - public string Name { get; set; } - public string FileName { get; set; } - } +namespace Activout.RestClient; - public class Part : Part - { - public T Content - { - get => (T)InternalContent; - set => InternalContent = value; - } - } -} \ No newline at end of file +public record Part(object Content, string? Name = null, string? FileName = null);