package com.airlock.iam.login.domain.model.targetapp;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.domain.model.auth.idpropagation.WafCredentialIdleTimeout;
import com.airlock.iam.common.domain.model.auth.idpropagation.WafCredentialLifetime;
import com.airlock.iam.common.domain.model.auth.idpropagation.WafCredentialTimeout;
import com.airlock.iam.login.application.configuration.targetapp.StaticTimeoutProviderConfig;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.inject.Inject;
import java.util.Optional;

@LogicForConfig(StaticTimeoutProviderConfig.class)
public class StaticTimeoutProvider implements TimeoutProvider {
   private final Optional<WafCredentialIdleTimeout> idleTimeout;
   private final Optional<WafCredentialLifetime> lifeTime;

   @Inject
   public StaticTimeoutProvider(Optional<WafCredentialIdleTimeout> idleTimeout, Optional<WafCredentialLifetime> lifeTime) {
      this.idleTimeout = idleTimeout;
      this.lifeTime = lifeTime;
   }

   @Override
   public Optional<WafCredentialTimeout> getTimeout() {
      return WafCredentialTimeout.wafCredentialTimeout(this.idleTimeout, this.lifeTime);
   }

   @SuppressFBWarnings(justification = "generated code")
   public Optional<WafCredentialIdleTimeout> getIdleTimeout() {
      return this.idleTimeout;
   }

   @SuppressFBWarnings(justification = "generated code")
   public Optional<WafCredentialLifetime> getLifeTime() {
      return this.lifeTime;
   }
}
