read method
docs for route, or null when it has @ApiIgnore()
Implementation
RouteDoc? read(RouteData route) {
Object? handler = _handler(route);
OpenApiOperation? op = handler == null ? null : _find(route, handler);
if (op != null && op.ignore) return null;
String method = PathConverter.method(route.method);
String path = PathConverter.path(route.path);
List<String> middleware = _adapter.middlewareNames(
route.controllers,
preMiddleware: route.preMiddleware,
);
List<Map<String, List<String>>>? security = _security(middleware);
Object? request = _request(route, op);
bool inQuery = _inQuery(method, op, request);
Object? schema = _schema(request);
if (inQuery) {
request = schema is Map && schema['properties'] is Map ? schema : null;
}
return RouteDoc(
method: method,
path: path,
summary: op?.summary ?? '${method.toUpperCase()} $path',
description: op?.description,
operationId: _operationId(op, method, path),
tags: op?.tags ?? const <String>[],
deprecated: op?.deprecated ?? false,
params: _params(route, op),
query: inQuery ? request : null,
body: inQuery ? null : request,
bodyMediaType: !inQuery && schema is Map<String, dynamic>
? RouteDoc.mediaTypeFor(schema)
: null,
responses: _responses(op, request != null, security != null, path),
security: security,
extensions: middleware.isEmpty
? const <String, dynamic>{}
: <String, dynamic>{'x-dox-middleware': middleware},
);
}