@@ -49,7 +49,7 @@ public HttpContent BuildContent() {
49
49
void AddFiles ( ) {
50
50
if ( ! _request . HasFiles ( ) && ! _request . AlwaysMultipartFormData ) return ;
51
51
52
- var mpContent = new MultipartFormDataContent ( GetOrSetFormBoundary ( ) ) ;
52
+ var mpContent = CreateMultipartFormDataContent ( ) ;
53
53
54
54
foreach ( var file in _request . Files ) {
55
55
var stream = file . GetFile ( ) ;
@@ -60,10 +60,7 @@ void AddFiles() {
60
60
61
61
var dispositionHeader = file . Options . DisableFilenameEncoding
62
62
? ContentDispositionHeaderValue . Parse ( $ "form-data; name=\" { file . Name } \" ; filename=\" { file . FileName } \" ")
63
- : new ContentDispositionHeaderValue ( "form-data" ) {
64
- Name = $ "\" { file . Name } \" ",
65
- FileName = $ "\" { file . FileName } \" "
66
- } ;
63
+ : new ContentDispositionHeaderValue ( "form-data" ) { Name = $ "\" { file . Name } \" ", FileName = $ "\" { file . FileName } \" " } ;
67
64
if ( ! file . Options . DisableFileNameStar ) dispositionHeader . FileNameStar = file . FileName ;
68
65
fileContent . Headers . ContentDisposition = dispositionHeader ;
69
66
@@ -104,11 +101,7 @@ HttpContent GetSerialized() {
104
101
105
102
var contentType = body . ContentType . Or ( serializer . Serializer . ContentType ) ;
106
103
107
- return new StringContent (
108
- content ,
109
- _client . Options . Encoding ,
110
- contentType . Value
111
- ) ;
104
+ return new StringContent ( content , _client . Options . Encoding , contentType . Value ) ;
112
105
}
113
106
}
114
107
@@ -119,6 +112,15 @@ static bool BodyShouldBeMultipartForm(BodyParameter bodyParameter) {
119
112
120
113
string GetOrSetFormBoundary ( ) => _request . FormBoundary ?? ( _request . FormBoundary = Guid . NewGuid ( ) . ToString ( ) ) ;
121
114
115
+ MultipartFormDataContent CreateMultipartFormDataContent ( ) {
116
+ var boundary = GetOrSetFormBoundary ( ) ;
117
+ var mpContent = new MultipartFormDataContent ( boundary ) ;
118
+ var contentType = new MediaTypeHeaderValue ( "multipart/form-data" ) ;
119
+ contentType . Parameters . Add ( new NameValueHeaderValue ( nameof ( boundary ) , GetBoundary ( boundary , _request . MultipartFormQuoteParameters ) ) ) ;
120
+ mpContent . Headers . ContentType = contentType ;
121
+ return mpContent ;
122
+ }
123
+
122
124
void AddBody ( bool hasPostParameters ) {
123
125
if ( ! _request . TryGetBodyParameter ( out var bodyParameter ) ) return ;
124
126
@@ -127,7 +129,7 @@ void AddBody(bool hasPostParameters) {
127
129
// we need to send the body
128
130
if ( hasPostParameters || _request . HasFiles ( ) || BodyShouldBeMultipartForm ( bodyParameter ! ) || _request . AlwaysMultipartFormData ) {
129
131
// here we must use multipart form data
130
- var mpContent = Content as MultipartFormDataContent ?? new MultipartFormDataContent ( GetOrSetFormBoundary ( ) ) ;
132
+ var mpContent = Content as MultipartFormDataContent ?? CreateMultipartFormDataContent ( ) ;
131
133
var ct = bodyContent . Headers . ContentType ? . MediaType ;
132
134
var name = bodyParameter ! . Name . IsEmpty ( ) ? ct : bodyParameter . Name ;
133
135
@@ -157,7 +159,7 @@ void AddPostParameters(GetOrPostParameter[] postParameters) {
157
159
158
160
mpContent . Add (
159
161
new StringContent ( postParameter . Value ? . ToString ( ) ?? "" , _client . Options . Encoding , postParameter . ContentType . Value ) ,
160
- _request . MultipartFormQuoteParameters ? $ " \" { parameterName } \" " : parameterName
162
+ parameterName
161
163
) ;
162
164
}
163
165
}
@@ -179,6 +181,8 @@ void AddPostParameters(GetOrPostParameter[] postParameters) {
179
181
}
180
182
}
181
183
184
+ static string GetBoundary ( string boundary , bool quote ) => quote ? $ "\" { boundary } \" " : boundary ;
185
+
182
186
void AddHeaders ( ) {
183
187
var contentHeaders = _parameters
184
188
. GetParameters < HeaderParameter > ( )
@@ -205,7 +209,7 @@ void AddHeader(HeaderParameter parameter) {
205
209
206
210
string GetContentTypeHeader ( string contentType )
207
211
=> Content is MultipartFormDataContent
208
- ? $ "{ contentType } ; boundary=\" { GetOrSetFormBoundary ( ) } \" "
212
+ ? $ "{ contentType } ; boundary={ GetBoundary ( GetOrSetFormBoundary ( ) , _request . MultipartFormQuoteParameters ) } "
209
213
: contentType ;
210
214
}
211
215
0 commit comments