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)
|
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);
|
object result = methodInfo.Invoke(this, arguments);
|
||||||
|
|
||||||
|
@ -53,13 +55,13 @@ namespace ln.http.api
|
||||||
|
|
||||||
result = json;
|
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();
|
ParameterInfo[] parameterInfos = methodInfo.GetParameters();
|
||||||
arguments = new object[parameterInfos.Length];
|
arguments = new object[parameterInfos.Length];
|
||||||
|
@ -95,7 +97,6 @@ namespace ln.http.api
|
||||||
throw new BadRequestException();
|
throw new BadRequestException();
|
||||||
} else if (Cast.To(value, parameterInfo.ParameterType, out arguments[n]))
|
} else if (Cast.To(value, parameterInfo.ParameterType, out arguments[n]))
|
||||||
{
|
{
|
||||||
|
|
||||||
} else if (value is string text)
|
} else if (value is string text)
|
||||||
{
|
{
|
||||||
arguments[n] = TypeDescriptor.GetConverter(parameterInfo.ParameterType).ConvertFromInvariantString(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)
|
bool FindArgumentByName(ArgumentSourceAttribute sourceAttribute, HttpRequest request, JSONValue jsonContent, string parameterName, out object value)
|
||||||
|
|
Loading…
Reference in New Issue