package com.airlock.iam.common.application.configuration.sms;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;
import lombok.NonNull;

class ServerAddress {
   @NonNull
   private final String domainName;
   private final int port;

   static Optional<ServerAddress> parseFrom(String addressToParse) {
      String[] parts = addressToParse.split(":");

      try {
         if (parts.length == 2) {
            return Optional.of(new ServerAddress(parts[0], Integer.parseInt(parts[1])));
         }
      } catch (NumberFormatException e) {
         return Optional.empty();
      }

      return Optional.empty();
   }

   @SuppressFBWarnings(justification = "generated code")
   private ServerAddress(@NonNull String domainName, int port) {
      if (domainName == null) {
         throw new NullPointerException("domainName is marked non-null but is null");
      }

      this.domainName = domainName;
      this.port = port;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public String getDomainName() {
      return this.domainName;
   }

   @SuppressFBWarnings(justification = "generated code")
   public int getPort() {
      return this.port;
   }
}
