package com.airlock.iam.flow.shared.domain.model.newdevice;

import com.airlock.iam.base.api.domain.model.exception.FailureException;
import java.util.regex.Pattern;
import lombok.NonNull;

public record LoginFromNewDeviceCookieName(@NonNull String name) {
   public static final int MIN_LENGTH = 1;
   public static final int MAX_LENGTH = 30;
   public static final String VALIDATION_REGEX = "[a-zA-Z0-9_]+";
   private static final Pattern VALIDATION_PATTERN = Pattern.compile("[a-zA-Z0-9_]+");

   public LoginFromNewDeviceCookieName {
      if (name == null) {
         throw new NullPointerException("name is marked non-null but is null");
      }

      if (name.length() < 1) {
         throw new FailureException("name is too short");
      }

      if (name.length() > 30) {
         throw new FailureException("name is too long");
      }

      if (!VALIDATION_PATTERN.matcher(name).matches()) {
         throw new FailureException("name did not match validation regex");
      }
   }
}
