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

import com.airlock.iam.common.api.domain.model.cookie.KnownSameSitePolicy;
import com.airlock.iam.common.api.domain.model.cookie.SameSitePolicy;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

public class OpenIdConnectSessionManagementSettings {
   private final OpenIdConnectSessionManagementSettings.SessionManagementSameSitePolicy sameSitePolicy;
   private final boolean debug;

   @SuppressFBWarnings(justification = "generated code")
   public OpenIdConnectSessionManagementSettings(OpenIdConnectSessionManagementSettings.SessionManagementSameSitePolicy sameSitePolicy, boolean debug) {
      this.sameSitePolicy = sameSitePolicy;
      this.debug = debug;
   }

   @SuppressFBWarnings(justification = "generated code")
   public OpenIdConnectSessionManagementSettings.SessionManagementSameSitePolicy getSameSitePolicy() {
      return this.sameSitePolicy;
   }

   @SuppressFBWarnings(justification = "generated code")
   public boolean isDebug() {
      return this.debug;
   }

   public enum SessionManagementSameSitePolicy implements SameSitePolicy {
      LAX(KnownSameSitePolicy.LAX),
      NONE(KnownSameSitePolicy.NONE),
      UNDEFINED(KnownSameSitePolicy.UNDEFINED);

      private final String sameSiteValue;

      SessionManagementSameSitePolicy(KnownSameSitePolicy knownSameSitePolicy) {
         this.sameSiteValue = knownSameSitePolicy.sameSiteValue();
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String sameSiteValue() {
         return this.sameSiteValue;
      }
   }
}
