/// <summary> /// Sets the object to use as the response content. /// </summary> /// <param name="builder">The <see cref="HttpRequestInterceptionBuilder"/> to use.</param> /// <param name="content">The object to serialize as JSON as the content.</param> /// <param name="settings">The optional <see cref="JsonSerializerSettings"/> to use.</param> /// <returns> /// The value specified by <paramref name="builder"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="builder"/> or <paramref name="content"/> is <see langword="null"/>. /// </exception> public static HttpRequestInterceptionBuilder WithNewtonsoftJsonContent( this HttpRequestInterceptionBuilder builder, object content, JsonSerializerSettings?settings = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (content == null) { throw new ArgumentNullException(nameof(content)); } byte[] ContentFactory() { string json = JsonConvert.SerializeObject(content, settings !); return(Encoding.UTF8.GetBytes(json)); } return(builder .WithMediaType(HttpClientInterceptorOptions.JsonMediaType) .WithContent(ContentFactory)); }
/// <summary> /// Sets the parameters to use as the form URL-encoded response content. /// </summary> /// <param name="builder">The <see cref="HttpRequestInterceptionBuilder"/> to use.</param> /// <param name="parameters">The parameters to use for the form URL-encoded content.</param> /// <returns> /// The value specified by <paramref name="builder"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="builder"/> or <paramref name="parameters"/> is <see langword="null"/>. /// </exception> public static HttpRequestInterceptionBuilder WithFormContent( this HttpRequestInterceptionBuilder builder, IEnumerable <KeyValuePair <string, string> > parameters) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } async Task <byte[]> ContentFactoryAsync() { // The cast is to make nullability match for .NET 5.0. // See https://github.com/dotnet/runtime/issues/38494. using var content = new FormUrlEncodedContent((IEnumerable <KeyValuePair <string?, string?> >)parameters); return(await content.ReadAsByteArrayAsync().ConfigureAwait(false)); } return(builder .WithMediaType(HttpClientInterceptorOptions.FormMediaType) .WithContent(ContentFactoryAsync)); }
/// <summary> /// Sets the object to use as the response content. /// </summary> /// <param name="builder">The <see cref="HttpRequestInterceptionBuilder"/> to use.</param> /// <param name="content">The object to serialize as JSON as the content.</param> /// <param name="options">The optional <see cref="JsonSerializerOptions"/> to use.</param> /// <returns> /// The value specified by <paramref name="builder"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="builder"/> or <paramref name="content"/> is <see langword="null"/>. /// </exception> public static HttpRequestInterceptionBuilder WithSystemTextJsonContent( this HttpRequestInterceptionBuilder builder, object content, JsonSerializerOptions?options = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (content == null) { throw new ArgumentNullException(nameof(content)); } byte[] ContentFactory() { return(JsonSerializer.SerializeToUtf8Bytes(content, options)); } return(builder .WithMediaType(HttpClientInterceptorOptions.JsonMediaType) .WithContent(ContentFactory)); }