addCommand<R, Res extends BaseResponse> method
void
addCommand<R, Res extends BaseResponse>(
- HttpContract<
R, Res> contract, - Future<
Response> handler()
Implementation
void addCommand<R, Res extends http.BaseResponse>(
HttpContract<R, Res> contract,
Future<Response> Function(CommandRequest<R>) handler,
) {
add(contract.method, contract.path, (Request shelfRequest) async {
try {
final contractRequest = await ShelfCommandRequest.fromShelfRequest<R, Res>(shelfRequest, contract);
return await handler(contractRequest);
} on ZardError catch (e) {
return Response(400,
body: jsonEncode({'errors': e.issues.map((i) => i.message).toList()}),
headers: {'Content-Type': 'application/json'});
} catch (e) {
return Response.internalServerError(body: e.toString());
}
});
}