package com.airlock.iam.oauth2.application.service.metadata;

import com.airlock.iam.oauth2.domain.model.metadata.OAuth2AsCentricEndpointUriComposer;
import com.airlock.iam.oauth2.domain.model.metadata.OAuth2MetadataIssuerValidationException;
import com.airlock.iam.oauth2.domain.model.metadata.OAuth2MetadataSettings;
import com.airlock.iam.oauth2.domain.service.metadata.OAuth2MetadataExtractor;
import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

public class OpenIdConnectDiscoveryService {
   private final OAuth2MetadataSettings metadataSettings;
   private final OAuth2AsCentricEndpointUriComposer uriComposer;

   public OIDCProviderMetadata provideDiscoveryMetadata() throws OAuth2MetadataIssuerValidationException {
      return new OAuth2MetadataExtractor(this.uriComposer).extractOIDCProviderMetadata(this.metadataSettings);
   }

   @SuppressFBWarnings(justification = "generated code")
   public OpenIdConnectDiscoveryService(OAuth2MetadataSettings metadataSettings, OAuth2AsCentricEndpointUriComposer uriComposer) {
      this.metadataSettings = metadataSettings;
      this.uriComposer = uriComposer;
   }
}
