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)); }
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)); })); }