fromShelf static method
Convert a Shelf Middleware to a Rivet MiddlewareHandler
Example:
app.use(shelfMiddleware(shelf.logRequests()));
Implementation
static MiddlewareHandler fromShelf(shelf.Middleware shelfMiddleware) {
return (RivetRequest req, next) async {
// Create a simple Shelf request from Rivet request
final shelfReq = shelf.Request(
req.method,
req.uri,
headers: _convertHeaders(req.headers),
);
// Create Shelf handler from Rivet next function
shelf.Handler shelfNext = (shelf.Request request) async {
// Call Rivet next
final rivetRes = await next();
// Convert Rivet response to Shelf response
if (rivetRes is RivetResponse) {
return shelf.Response(
rivetRes.statusCode,
body: rivetRes.body,
headers: rivetRes.headers,
);
}
// Fallback
return shelf.Response.ok('');
};
// Apply Shelf middleware
final wrappedHandler = shelfMiddleware(shelfNext);
final shelfRes = await wrappedHandler(shelfReq);
// Convert Shelf response back to Rivet response
final body = await shelfRes.readAsString();
return RivetResponse(
body,
statusCode: shelfRes.statusCode,
headers: shelfRes.headers,
);
};
}