build method

OpenApi build(
  1. Iterable<RouteData> routes
)

The document for routes.

Implementation

OpenApi build(Iterable<RouteData> routes) {
  OpenApiRouteReader reader = OpenApiRouteReader(config);
  ApiDoc docs = ApiDoc();
  for (RouteData route in routes) {
    if (_paths.contains(route.path) ||
        !PathConverter.isSupportedMethod(route.method)) {
      continue;
    }
    RouteDoc? doc = reader.read(route);
    if (doc != null) docs.add(doc);
  }
  for (MapEntry<String, Map<String, dynamic>> schema
      in config.registry.schemas.entries) {
    docs.schema(schema.key, schema.value);
  }
  if (reader.usesValidationError) {
    docs.schema(OpenApiRouteReader.validationError, _validationErrorSchema);
  }
  Map<String, SecurityScheme> schemes = config.securitySchemes;
  if (reader.usesBearerAuth &&
      !schemes.containsKey(OpenApiRouteReader.bearerAuth)) {
    schemes = <String, SecurityScheme>{
      ...schemes,
      OpenApiRouteReader.bearerAuth: SecurityScheme.bearer(),
    };
  }
  return OpenApi(
    info: config.info,
    servers: config.servers,
    securitySchemes: schemes,
    docs: docs,
  );
}