Added defaultResponseFactory mechanism to WebApiController
ln.build - build0.waldrennach.l--n.de build job pending
Details
ln.build - build0.waldrennach.l--n.de build job pending
Details
parent
4cf75a223d
commit
832bceacb5
|
@ -40,7 +40,9 @@ namespace ln.http.api
|
|||
|
||||
HttpResponse MapRequest(HttpRequest request, MethodInfo methodInfo)
|
||||
{
|
||||
MapArguments(request, methodInfo, out object[] arguments);
|
||||
Func<HttpResponse> defaultResponseFactory;
|
||||
|
||||
MapArguments(request, methodInfo, out object[] arguments, out defaultResponseFactory);
|
||||
|
||||
object result = methodInfo.Invoke(this, arguments);
|
||||
|
||||
|
@ -53,13 +55,13 @@ namespace ln.http.api
|
|||
|
||||
result = json;
|
||||
}
|
||||
return HttpResponse.OK().Content((JSONValue)result);
|
||||
return defaultResponseFactory().Content((JSONValue)result);
|
||||
}
|
||||
|
||||
return HttpResponse.OK().Content(result.ToString());
|
||||
return defaultResponseFactory().Content(result.ToString());
|
||||
}
|
||||
|
||||
void MapArguments(HttpRequest request, MethodInfo methodInfo,out object[] arguments)
|
||||
void MapArguments(HttpRequest request, MethodInfo methodInfo,out object[] arguments, out Func<HttpResponse> defaultRepsonseFactory)
|
||||
{
|
||||
ParameterInfo[] parameterInfos = methodInfo.GetParameters();
|
||||
arguments = new object[parameterInfos.Length];
|
||||
|
@ -95,7 +97,6 @@ namespace ln.http.api
|
|||
throw new BadRequestException();
|
||||
} else if (Cast.To(value, parameterInfo.ParameterType, out arguments[n]))
|
||||
{
|
||||
|
||||
} else if (value is string text)
|
||||
{
|
||||
arguments[n] = TypeDescriptor.GetConverter(parameterInfo.ParameterType).ConvertFromInvariantString(text);
|
||||
|
@ -108,6 +109,32 @@ namespace ln.http.api
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (request.HttpMethod)
|
||||
{
|
||||
case HttpMethod.GET:
|
||||
if (typeof(void).Equals(methodInfo.ReturnType))
|
||||
defaultRepsonseFactory = HttpResponse.NoContent;
|
||||
else
|
||||
defaultRepsonseFactory = HttpResponse.OK;
|
||||
break;
|
||||
case HttpMethod.POST:
|
||||
defaultRepsonseFactory = HttpResponse.Created;
|
||||
break;
|
||||
case HttpMethod.PUT:
|
||||
defaultRepsonseFactory = HttpResponse.OK;
|
||||
break;
|
||||
case HttpMethod.PATCH:
|
||||
defaultRepsonseFactory = HttpResponse.OK;
|
||||
break;
|
||||
case HttpMethod.DELETE:
|
||||
defaultRepsonseFactory = HttpResponse.NoContent;
|
||||
break;
|
||||
default:
|
||||
defaultRepsonseFactory = HttpResponse.OK;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool FindArgumentByName(ArgumentSourceAttribute sourceAttribute, HttpRequest request, JSONValue jsonContent, string parameterName, out object value)
|
||||
|
|
Loading…
Reference in New Issue