package com.l7tech.gateway.common.resources;

import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.search.Dependency;
import com.l7tech.search.Dependency.DependencyType;
import com.l7tech.search.Dependency.MethodReturnType;
import com.l7tech.util.DeserializeSafe;
import com.l7tech.util.GoidUpgradeMapper;
import com.l7tech.util.XmlSafe;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import java.io.Serializable;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import org.hibernate.annotations.Type;

@Embeddable
@XmlSafe
@DeserializeSafe
public class HttpProxyConfiguration implements Serializable {
   private final boolean locked;
   private String host;
   private int port;
   private String username;
   private Goid passwordGoid;
   static final long serialVersionUID = -6703449228632846002L;
   private static final String a;

   @XmlSafe
   public HttpProxyConfiguration() {
      this.locked = false;
   }

   @XmlSafe
   public HttpProxyConfiguration(HttpProxyConfiguration var1, boolean var2) {
      this.locked = var2;
      if (var1 != null) {
         this.host = var1.host;
         this.port = var1.port;
         this.username = var1.username;
         this.passwordGoid = var1.passwordGoid;
      }
   }

   @Size(max = 128)
   @XmlSafe
   @Column(name = "proxy_host", length = 128)
   public String getHost() {
      return this.host;
   }

   @XmlSafe
   public void setHost(String var1) {
      this.checkLocked();
      this.host = var1;
   }

   @Min(0L)
   @Max(65535L)
   @XmlSafe
   @Column(name = "proxy_port")
   public int getPort() {
      return this.port;
   }

   @XmlSafe
   public void setPort(int var1) {
      this.checkLocked();
      this.port = var1;
   }

   @Size(max = 255)
   @XmlSafe
   @Column(name = "proxy_username", length = 255)
   public String getUsername() {
      return this.username;
   }

   @XmlSafe
   public void setUsername(String var1) {
      this.checkLocked();
      this.username = var1;
   }

   @XmlSafe
   @Column(name = "proxy_password_goid")
   @Type(type = "com.l7tech.server.util.GoidType")
   @Dependency(methodReturnType = MethodReturnType.GOID, type = DependencyType.SECURE_PASSWORD)
   public Goid getPasswordGoid() {
      return this.passwordGoid;
   }

   @XmlSafe
   public void setPasswordGoid(Goid var1) {
      this.checkLocked();
      this.passwordGoid = var1;
   }

   @Deprecated
   @XmlSafe
   public void setPasswordOid(Long var1) {
      this.checkLocked();
      this.passwordGoid = GoidUpgradeMapper.mapOid(EntityType.SECURE_PASSWORD, var1);
   }

   private void checkLocked() {
      try {
         if (this.locked) {
            throw new IllegalStateException(a);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }
   }

   private static IllegalStateException a(IllegalStateException var0) {
      return var0;
   }

   static {
      String var10002 = a(37, a("H\u0014\u0012\u0005f}`~\u0005\u0018\n}l`g\u001a\u001f\u0000lm`h\u001a\u0012\r`n5y\u0014\b\u0002fg"));
      byte var10001 = -1;
      a = var10002;
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 101);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 46;
            case 1 -> 80;
            case 2 -> 89;
            case 3 -> 78;
            case 4 -> 44;
            case 5 -> 44;
            default -> 101;
         });
      }

      return new String(var10001).intern();
   }
}
