package com.airlock.iam.oauth2.domain.model.authorization;

import com.airlock.iam.oauth2.api.domain.model.AuthorizationServerId;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.net.URI;
import java.util.function.Function;

public class OAuth2ApplicationUiSettings {
   private final Function<AuthorizationServerId, URI> authorizationUriGenerator;
   private final Function<AuthorizationServerId, URI> checkSessionUriGenerator;

   public OAuth2ApplicationUiSettings.OAuth2ApplicationUiTarget authorizationEndpointUri(AuthorizationServerId asId) {
      return new OAuth2ApplicationUiSettings.OAuth2ApplicationUiTarget(this.authorizationUriGenerator.apply(asId));
   }

   public OAuth2ApplicationUiSettings.OAuth2ApplicationUiTarget checkSessionEndpointUri(AuthorizationServerId asId) {
      return new OAuth2ApplicationUiSettings.OAuth2ApplicationUiTarget(this.checkSessionUriGenerator.apply(asId));
   }

   @SuppressFBWarnings(justification = "generated code")
   public OAuth2ApplicationUiSettings(
      Function<AuthorizationServerId, URI> authorizationUriGenerator, Function<AuthorizationServerId, URI> checkSessionUriGenerator
   ) {
      this.authorizationUriGenerator = authorizationUriGenerator;
      this.checkSessionUriGenerator = checkSessionUriGenerator;
   }

   public record OAuth2ApplicationUiTarget(URI redirectUri) {
   }
}
