Ejemplo n.º 1
0
        /// <summary>
        /// Specifies the <paramref name="statusCode"/> and <paramref name="value"/> to respond with for a request.
        /// </summary>
        /// <param name="responds"></param>
        /// <param name="statusCode">The status code response for given request.</param>
        /// <param name="value">The response value.</param>
        /// <param name="formatter">The media type formatter</param>
        /// <param name="mediaType">The media type. Can be null, in which case the <paramref name="formatter"/> default content type will be used.</param>
        public static TResult RespondObject <T, TResult>(this IResponds <TResult> responds, HttpStatusCode statusCode, Func <HttpRequestMessage, T> value, MediaTypeFormatter formatter, MediaTypeHeaderValue mediaType)
            where TResult : IResponseResult
        {
            if (responds is null)
            {
                throw new ArgumentNullException(nameof(responds));
            }

            return(responds.RespondUsing(new MediaTypeFormatterObjectResponseStrategy <T>(statusCode, value, mediaType, formatter)));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Specifies to throw a <see cref="TaskCanceledException"/> after a specified amount of time, simulating a HTTP request timeout.
        /// </summary>
        /// <param name="responds"></param>
        /// <param name="timeoutAfter">The time after which the timeout occurs.</param>
        public static TResult TimesOutAfter <TResult>(this IResponds <TResult> responds, TimeSpan timeoutAfter)
            where TResult : IResponseResult
        {
            if (responds is null)
            {
                throw new ArgumentNullException(nameof(responds));
            }

            return(responds.RespondUsing(new TimeoutStrategy(timeoutAfter)));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Specifies a strategy that returns the response for a request.
        /// </summary>
        /// <param name="responds"></param>
        internal static TResult RespondUsing <TStrategy, TResult>(this IResponds <TResult> responds)
            where TStrategy : IResponseStrategy, new()
            where TResult : IResponseResult
        {
            if (responds is null)
            {
                throw new ArgumentNullException(nameof(responds));
            }

            return(responds.RespondUsing(new TStrategy()));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Specifies the <paramref name="statusCode"/> and <paramref name="content"/> to respond with for a request.
        /// </summary>
        /// <param name="responds"></param>
        /// <param name="statusCode">The status code response for given request.</param>
        /// <param name="content">The response content.</param>
        /// <param name="mediaType">The media type. Can be null, in which case the default JSON content type will be used.</param>
        /// <param name="serializerSettings">The serializer settings.</param>
        public static TResult RespondJson <T, TResult>(this IResponds <TResult> responds, HttpStatusCode statusCode, Func <HttpRequestMessage, T> content, MediaTypeHeaderValue mediaType, JsonSerializerSettings serializerSettings)
            where TResult : IResponseResult
        {
            if (responds is null)
            {
                throw new ArgumentNullException(nameof(responds));
            }

            MediaTypeHeaderValue mt = mediaType ?? MediaTypeHeaderValue.Parse("application/json; charset=utf-8");

            return(responds.RespondUsing(new JsonResponseStrategy <T>(statusCode, content, mt, serializerSettings)));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Specifies the <paramref name="statusCode"/> and <paramref name="streamContent"/> to respond with for a request.
        /// </summary>
        /// <param name="responds"></param>
        /// <param name="statusCode">The status code response for given request.</param>
        /// <param name="streamContent">The factory to create the response stream with.</param>
        /// <param name="mediaType">The media type.</param>
        public static TResult Respond <TResult>(this IResponds <TResult> responds, HttpStatusCode statusCode, Func <Stream> streamContent, MediaTypeHeaderValue mediaType)
            where TResult : IResponseResult
        {
            if (responds is null)
            {
                throw new ArgumentNullException(nameof(responds));
            }

            if (streamContent is null)
            {
                throw new ArgumentNullException(nameof(streamContent));
            }

            return(responds.RespondUsing(new FromStreamStrategy(statusCode, streamContent, mediaType)));
        }