Skip to content

Commit 5042a32

Browse files
committed
Revert API change to IHttpService
Media type is just like any other property that can be altered between the time the HttpRequestMessage is created and the HTTP request is actually sent.
1 parent beb9520 commit 5042a32

File tree

5 files changed

+28
-36
lines changed

5 files changed

+28
-36
lines changed

src/OpenStack.Net/OpenStack/Services/ContentDelivery/V1/ContentDeliveryClient.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public virtual Task<GetHomeApiCall> PrepareGetHomeAsync(CancellationToken cancel
5757
UriTemplate template = new UriTemplate(string.Empty);
5858
Dictionary<string, string> parameters = new Dictionary<string, string>();
5959
return GetBaseUriAsync(cancellationToken)
60-
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken, "application/json"))
60+
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken))
6161
.Select(task => new GetHomeApiCall(CreateJsonApiCall<HomeDocument>(task.Result)));
6262
}
6363

@@ -79,7 +79,7 @@ public virtual Task<PingApiCall> PreparePingAsync(CancellationToken cancellation
7979
UriTemplate template = new UriTemplate("ping");
8080
Dictionary<string, string> parameters = new Dictionary<string, string>();
8181
return GetBaseUriAsync(cancellationToken)
82-
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken, "application/json"))
82+
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken))
8383
//.Select(RemoveAcceptHeader) **DLS**
8484
.Select(task => new PingApiCall(CreateBasicApiCall(task.Result)));
8585
}
@@ -209,8 +209,14 @@ public virtual Task<UpdateServiceApiCall> PrepareUpdateServiceAsync(ServiceId se
209209
UriTemplate template = new UriTemplate("services/{service_id}");
210210
Dictionary<string, string> parameters = new Dictionary<string, string> { { "service_id", serviceId.Value } };
211211
return GetBaseUriAsync(cancellationToken)
212-
.Then(PrepareRequestAsyncFunc(new HttpMethod("PATCH"), "application/json-patch+json", template, parameters, jsonPatchDocument, cancellationToken))
213-
.Select(task => new UpdateServiceApiCall(CreateBasicApiCall(task.Result)));
212+
.Then(PrepareRequestAsyncFunc(new HttpMethod("PATCH"), template, parameters, jsonPatchDocument, cancellationToken))
213+
.Select(
214+
task =>
215+
{
216+
HttpRequestMessage requestMessage = task.Result;
217+
requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json-patch+json");
218+
return new UpdateServiceApiCall(CreateBasicApiCall(requestMessage));
219+
});
214220
}
215221

216222
/// <inheritdoc/>

src/OpenStack.Net/OpenStack/Services/IHttpService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public interface IHttpService : IDisposable
3838
/// <para>-or-</para>
3939
/// <para>If <paramref name="parameters"/> is <see langword="null"/>.</para>
4040
/// </exception>
41-
Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, CancellationToken cancellationToken, string mediaType);
41+
Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, CancellationToken cancellationToken);
4242

4343
/// <summary>
4444
/// Creates a task continuation function responsible for creating an <see cref="HttpRequestMessage"/> for use in
@@ -66,7 +66,7 @@ public interface IHttpService : IDisposable
6666
/// <para>-or-</para>
6767
/// <para>If <paramref name="parameters"/> is <see langword="null"/>.</para>
6868
/// </exception>
69-
Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBody>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, TBody body, CancellationToken cancellationToken, string mediaType);
69+
Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBody>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, TBody body, CancellationToken cancellationToken);
7070

7171
/// <summary>
7272
/// Gets the base absolute URI to use for making asynchronous HTTP API calls to this service.

src/OpenStack.Net/OpenStack/Services/Identity/BaseIdentityClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public virtual Task<ListApiVersionsApiCall> PrepareListApiVersionsAsync(Cancella
141141
};
142142

143143
return GetBaseUriAsync(cancellationToken)
144-
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken, "application/json"))
144+
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken))
145145
.Select(task => new ListApiVersionsApiCall(CreateCustomApiCall(task.Result, HttpCompletionOption.ResponseContentRead, deserializeResult)));
146146
}
147147

@@ -152,7 +152,7 @@ public virtual Task<GetApiVersionApiCall> PrepareGetApiVersionAsync(ApiVersionId
152152
Dictionary<string, string> parameters = new Dictionary<string, string> { { "version_id", apiVersionId.Value } };
153153

154154
return GetBaseUriAsync(cancellationToken)
155-
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken, "application/json"))
155+
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken))
156156
.Select(task => new GetApiVersionApiCall(CreateJsonApiCall<ApiVersionResponse>(task.Result)));
157157
}
158158

src/OpenStack.Net/OpenStack/Services/Identity/V2/IdentityClient.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public virtual Task<ListExtensionsApiCall> PrepareListExtensionsAsync(Cancellati
127127
};
128128

129129
return GetBaseUriAsync(cancellationToken)
130-
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken, "application/json"))
130+
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken))
131131
.Select(task => new ListExtensionsApiCall(CreateCustomApiCall(task.Result, HttpCompletionOption.ResponseContentRead, deserializeResult)));
132132
}
133133

@@ -141,7 +141,7 @@ public virtual Task<GetExtensionApiCall> PrepareGetExtensionAsync(ExtensionAlias
141141
Dictionary<string, string> parameters = new Dictionary<string, string> { { "alias", alias.Value } };
142142

143143
return GetBaseUriAsync(cancellationToken)
144-
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken, "application/json"))
144+
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken))
145145
.Select(task => new GetExtensionApiCall(CreateJsonApiCall<ExtensionResponse>(task.Result)));
146146
}
147147

@@ -152,7 +152,7 @@ public virtual Task<AuthenticateApiCall> PrepareAuthenticateAsync(Authentication
152152
Dictionary<string, string> parameters = new Dictionary<string, string>();
153153

154154
return GetBaseUriAsync(cancellationToken)
155-
.Then(PrepareRequestAsyncFunc(HttpMethod.Post, template, parameters, request, cancellationToken, "application/json"))
155+
.Then(PrepareRequestAsyncFunc(HttpMethod.Post, template, parameters, request, cancellationToken))
156156
.Select(task => new AuthenticateApiCall(CreateJsonApiCall<AccessResponse>(task.Result)));
157157
}
158158

@@ -208,7 +208,7 @@ public virtual Task<ListTenantsApiCall> PrepareListTenantsAsync(CancellationToke
208208
};
209209

210210
return GetBaseUriAsync(cancellationToken)
211-
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken, "application/json"))
211+
.Then(PrepareRequestAsyncFunc(HttpMethod.Get, template, parameters, cancellationToken))
212212
.Select(task => new ListTenantsApiCall(CreateCustomApiCall(task.Result, HttpCompletionOption.ResponseContentRead, deserializeResult)));
213213
}
214214

src/OpenStack.Net/OpenStack/Services/ServiceClient.cs

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,9 @@ protected virtual void Dispose(bool disposing)
301301
/// <para>-or-</para>
302302
/// <para>If <paramref name="parameters"/> is <see langword="null"/>.</para>
303303
/// </exception>
304-
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, CancellationToken cancellationToken, Func<Uri, Uri> uriTransform, string mediaType = "application/json")
304+
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, CancellationToken cancellationToken, Func<Uri, Uri> uriTransform)
305305
{
306-
var prepared = PrepareRequestAsyncFunc(method, template, parameters, cancellationToken, mediaType);
306+
var prepared = PrepareRequestAsyncFunc(method, template, parameters, cancellationToken);
307307
if (uriTransform == null)
308308
return prepared;
309309

@@ -343,7 +343,7 @@ public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(Http
343343
/// <para>-or-</para>
344344
/// <para>If <paramref name="parameters"/> is <see langword="null"/>.</para>
345345
/// </exception>
346-
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, CancellationToken cancellationToken, string mediaType = "application/json")
346+
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, CancellationToken cancellationToken)
347347
{
348348
if (template == null)
349349
throw new ArgumentNullException("template");
@@ -354,7 +354,7 @@ public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(Http
354354
task =>
355355
{
356356
Uri baseUri = task.Result;
357-
HttpRequestMessage request = PrepareRequestImpl(method, template, baseUri, parameters, mediaType);
357+
HttpRequestMessage request = PrepareRequestImpl(method, template, baseUri, parameters);
358358

359359
Func<Task<HttpRequestMessage>, Task<HttpRequestMessage>> authenticateRequest =
360360
task2 => AuthenticationService.AuthenticateRequestAsync(task2.Result, cancellationToken).Select(_ => task2.Result);
@@ -393,7 +393,7 @@ public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T>(Http
393393
/// <para>-or-</para>
394394
/// <para>If <paramref name="parameters"/> is <see langword="null"/>.</para>
395395
/// </exception>
396-
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBody>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, TBody body, CancellationToken cancellationToken, Func<Uri, Uri> uriTransform, string mediaType = "application/json")
396+
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBody>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, TBody body, CancellationToken cancellationToken, Func<Uri, Uri> uriTransform)
397397
{
398398
var prepared = PrepareRequestAsyncFunc(method, template, parameters, body, cancellationToken);
399399
if (uriTransform == null)
@@ -439,7 +439,7 @@ public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBod
439439
/// <para>-or-</para>
440440
/// <para>If <paramref name="parameters"/> is <see langword="null"/>.</para>
441441
/// </exception>
442-
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBody>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, TBody body, CancellationToken cancellationToken, string mediaType = "application/json")
442+
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBody>(HttpMethod method, UriTemplate template, IDictionary<string, T> parameters, TBody body, CancellationToken cancellationToken)
443443
{
444444
return
445445
task =>
@@ -454,20 +454,6 @@ public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBod
454454
};
455455
}
456456

457-
public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBody>(HttpMethod method, string mediaType, UriTemplate template, IDictionary<string, T> parameters, TBody body, CancellationToken cancellationToken)
458-
{
459-
return
460-
task =>
461-
{
462-
Uri baseUri = task.Result;
463-
HttpRequestMessage request = PrepareRequestImpl(method, template, baseUri, parameters);
464-
request.Content = EncodeRequestBodyImpl(request, body, mediaType);
465-
466-
Func<Task<HttpRequestMessage>, Task<HttpRequestMessage>> authenticateRequest =
467-
task2 => AuthenticationService.AuthenticateRequestAsync(task2.Result, cancellationToken).Select(_ => task2.Result);
468-
return CompletedTask.FromResult(request).Then(authenticateRequest);
469-
};
470-
}
471457
/// <summary>
472458
/// Encode the body of a request, and update the <see cref="HttpRequestMessage"/> properties as necessary to
473459
/// support the encoded body.
@@ -485,15 +471,15 @@ public Func<Task<Uri>, Task<HttpRequestMessage>> PrepareRequestAsyncFunc<T, TBod
485471
/// <returns>An <see cref="HttpContent"/> object representing the body of the
486472
/// <see cref="HttpRequestMessage"/>.</returns>
487473
/// <exception cref="ArgumentNullException">If <paramref name="request"/> is <see langword="null"/>.</exception>
488-
protected virtual HttpContent EncodeRequestBodyImpl<TBody>(HttpRequestMessage request, TBody body, string mediaType = "application/json")
474+
protected virtual HttpContent EncodeRequestBodyImpl<TBody>(HttpRequestMessage request, TBody body)
489475
{
490476
if (request == null)
491477
throw new ArgumentNullException("request");
492478

493479
string bodyText = JsonConvert.SerializeObject(body);
494480
byte[] encodedBody = Encoding.UTF8.GetBytes(bodyText);
495481
ByteArrayContent content = new ByteArrayContent(encodedBody);
496-
content.Headers.ContentType = new MediaTypeHeaderValue(mediaType) { CharSet = "UTF-8" };
482+
content.Headers.ContentType = new MediaTypeHeaderValue("application/json") { CharSet = "UTF-8" };
497483

498484
content.Headers.ContentLength = encodedBody.Length;
499485

@@ -547,12 +533,12 @@ protected virtual HttpContent EncodeRequestBodyImpl<TBody>(HttpRequestMessage re
547533
/// <para>If <paramref name="parameters"/> is <see langword="null"/>.</para>
548534
/// </exception>
549535
/// <exception cref="ArgumentException">If <paramref name="baseUri"/> is not an absolute URI.</exception>
550-
protected virtual HttpRequestMessage PrepareRequestImpl<T>(HttpMethod method, UriTemplate template, Uri baseUri, IDictionary<string, T> parameters, string mediaType = "application/json")
536+
protected virtual HttpRequestMessage PrepareRequestImpl<T>(HttpMethod method, UriTemplate template, Uri baseUri, IDictionary<string, T> parameters)
551537
{
552538
Uri boundUri = template.BindByName(baseUri, parameters);
553539

554540
HttpRequestMessage request = new HttpRequestMessage(method, boundUri);
555-
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType));
541+
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
556542
request.Headers.UserAgent.Add(new ProductInfoHeaderValue(AssemblyInfo.AssemblyProduct, AssemblyInfo.AssemblyInformationalVersion));
557543
#if !PORTABLE
558544
if (ConnectionLimit.HasValue)

0 commit comments

Comments
 (0)