Esempio n. 1
0
        internal static TResult ContentToType <TResult>(IApplication httpApp, Type type,
                                                        MultipartContentTokenParser tokenReader,
                                                        Func <object, TResult> onParsed,
                                                        Func <string, TResult> onNeedsStringParsed)
        {
            if (type.IsAssignableFrom(typeof(Stream)))
            {
                var streamValue = tokenReader.ReadStream();
                return(onParsed((object)streamValue));
            }
            if (type.IsAssignableFrom(typeof(byte[])))
            {
                var byteArrayValue = tokenReader.ReadBytes();
                return(onParsed((object)byteArrayValue));
            }
            if (type.IsAssignableFrom(typeof(HttpContent)))
            {
                var content = tokenReader.ReadObject <HttpContent>();
                return(onParsed((object)content));
            }
            if (type.IsAssignableFrom(typeof(System.Net.Http.Headers.ContentDispositionHeaderValue)))
            {
                var content = tokenReader.ReadObject <HttpContent>();
                var header  = content.Headers.ContentDisposition;
                return(onParsed((object)header));
            }
            if (type.IsAssignableFrom(typeof(ByteArrayContent)))
            {
                var content = tokenReader.ReadObject <ByteArrayContent>();
                return(onParsed((object)content));
            }
            var strValue = tokenReader.ReadString();

            return(onNeedsStringParsed(strValue));
        }
Esempio n. 2
0
        internal static TResult ContentToType <TResult>(IApplication httpApp, ParameterInfo paramInfo,
                                                        MultipartContentTokenParser tokenReader,
                                                        Func <object, TResult> onParsed,
                                                        Func <string, TResult> onFailure)
        {
            var type = paramInfo.ParameterType;

            return(ContentToType(httpApp, type, tokenReader,
                                 onParsed,
                                 strValue =>
            {
                return httpApp.Bind(strValue, paramInfo,
                                    (value) =>
                {
                    return onParsed(value);
                },
                                    why => onFailure(why));
            }));
        }