SwaggerServer.fromMeta constructor

SwaggerServer.fromMeta(
  1. RevaliContext context,
  2. MetaServer server,
  3. SwaggerSettings settings,
  4. SchemaRegistry registry,
)

Implementation

factory SwaggerServer.fromMeta(
  RevaliContext context,
  MetaServer server,
  SwaggerSettings settings,
  SchemaRegistry registry,
) {
  var title = settings.title;
  var version = settings.version;
  var description = settings.description;

  for (final app in server.apps) {
    if (context.flavor != null &&
        app.appAnnotation.flavor != context.flavor) {
      continue;
    }

    app.annotationsFor(
      onMatch: [
        OnMatch(
          classType: ApiInfo,
          package: 'revali_swagger_annotations',
          convert: (object, annotation) {
            title = object.getField('title')?.toStringValue() ?? title;
            version = object.getField('version')?.toStringValue() ?? version;
            description =
                object.getField('description')?.toStringValue() ??
                description;
          },
        ),
      ],
    );

    break;
  }

  return SwaggerServer(
    info: SwaggerInfo(
      title: title,
      version: version,
      description: description,
    ),
    controllers: server.routes
        .map((r) => SwaggerController.fromMeta(r, registry))
        .toList(),
  );
}