register method

  1. @override
void register(
  1. Container container
)
override

Register services with the container.

This method is called when the provider is registered with the container. Use this method to register bindings, instances, and aliases.

Implementation

@override
void register(Container container) {
  final registry = container.get<MiddlewareRegistry>();
  registry.register('routed.cors', (_) => corsMiddleware());

  if (!container.has<Config>() || !container.has<EngineConfig>()) {
    return;
  }

  final appConfig = container.get<Config>();
  final engineConfig = container.get<EngineConfig>();
  final resolved = spec.resolveFromConfig(
    appConfig,
    existing: engineConfig.security.cors,
  );

  if (_corsEquals(engineConfig.security.cors, resolved)) {
    return;
  }

  if (container.has<Engine>()) {
    final engine = container.get<Engine>();
    _applyCorsConfig(engine, appConfig);
  } else {
    container.instance<EngineConfig>(
      engineConfig.copyWith(
        security: engineConfig.security.copyWith(cors: resolved),
      ),
    );
  }
}