package com.l7tech.external.assertions.gatewaygraphql.server.resolver.mutation;

import com.l7tech.external.assertions.gatewaygraphql.EntityTypeInfo;
import com.l7tech.external.assertions.gatewaygraphql.server.data.EntityFieldOption;
import com.l7tech.external.assertions.gatewaygraphql.server.data.EntityMappingInstruction;
import com.l7tech.external.assertions.gatewaygraphql.server.data.HttpConfigurationDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.resolver.EntityResolver;
import com.l7tech.external.assertions.gatewaygraphql.server.resolver.finder.HttpConfigurationFinder;
import com.l7tech.external.assertions.gatewaygraphql.server.util.Util;
import com.l7tech.gateway.common.resources.HttpConfiguration;
import com.l7tech.gateway.common.resources.HttpProxyConfiguration;
import com.l7tech.gateway.common.resources.HttpConfiguration.Option;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.server.globalresources.HttpConfigurationManager;
import com.l7tech.server.security.password.SecurePasswordManager;
import graphql.schema.DataFetchingEnvironment;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import lombok.Generated;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.transaction.PlatformTransactionManager;

public class HttpConfigurationMutationResolver
   extends EntityManagerAwareGraphQLMutationResolver<HttpConfiguration, EntityHeader, HttpConfigurationManager, HttpConfigurationDTO, HttpConfigurationDTO.HttpConfigurationInput> {
   @Generated
   private static final Logger b;
   private final SecurePasswordManager c;
   private static final String[] d;

   public HttpConfigurationMutationResolver(PlatformTransactionManager var1, BeanFactory var2) {
      String[] var3 = d;
      super(EntityTypeInfo.HTTP_CONFIGURATION, var1, (HttpConfigurationManager)var2.getBean(var3[7], HttpConfigurationManager.class));
      this.c = (SecurePasswordManager)var2.getBean(var3[9], SecurePasswordManager.class);
   }

   @Override
   protected Logger getLogger() {
      return b;
   }

   public HttpConfigurationDTO.HttpConfigurationsPayload setHttpConfigurations(
      List<HttpConfigurationDTO.HttpConfigurationInput> var1, DataFetchingEnvironment var2
   ) {
      HttpConfigurationDTO.HttpConfigurationsPayload var3 = new HttpConfigurationDTO.HttpConfigurationsPayload();
      this.transformNoDefEntityMappings(var1, var2);
      if (var1.isEmpty()) {
         return var3;
      }

      HttpConfigurationFinder var4 = new HttpConfigurationFinder(this.entityManager);
      return this.execute(var2, (var4x, var5) -> {
         var4x.setFinder(var4);
         var1.forEach(var4xx -> this.doUpsertSilently(var4xx, var4x, var3, var5));
         return var3;
      });
   }

   public HttpConfigurationDTO.HttpConfigurationsPayload deleteHttpConfigurations(
      List<HttpConfigurationDTO.HttpConfigurationPartialInput> var1, DataFetchingEnvironment var2
   ) {
      HttpConfigurationDTO.HttpConfigurationsPayload var3 = new HttpConfigurationDTO.HttpConfigurationsPayload();
      if (var1.isEmpty()) {
         return var3;
      }

      HttpConfigurationFinder var4 = new HttpConfigurationFinder(this.entityManager);
      return this.execute(var2, (var4x, var5) -> {
         var4x.setFinder(var4);
         var1.forEach(var4xx -> this.doDeleteSilently(var4xx, var4x, var3, var5));
         return var3;
      });
   }

   protected HttpConfiguration toEntity(HttpConfigurationDTO.HttpConfigurationInput var1) {
      return new HttpConfiguration();
   }

   protected HttpConfigurationDTO toEntityDTO(HttpConfiguration var1) {
      return new HttpConfigurationDTO(var1, this.c);
   }

   protected HttpConfigurationDTO.HttpConfigurationInput toEntityInput(EntityMappingInstruction var1) {
      HttpConfigurationDTO.HttpConfigurationInput var2 = new HttpConfigurationDTO.HttpConfigurationInput();
      var2.setHost(var1.getIdentityValue());
      String[] var5 = d;
      var2.setPath(var1.getSourceString(var5[2]));
      String var3 = var1.getSourceString(var5[5]);
      if (var3 != null) {
         var2.setProtocol(HttpConfigurationDTO.HttpScheme.valueOf(var3));
      }

      Object var4 = var1.getSource(d[3]);
      if (var4 != null) {
         var2.setPort(Integer.parseInt(var4.toString()));
      }

      return var2;
   }

   protected HttpConfigurationDTO.HttpConfigurationInput toEntityInput(Object var1) {
      return (HttpConfigurationDTO.HttpConfigurationInput)var1;
   }

   protected Map<String, Object> toRawEntity(@Nullable HttpConfigurationDTO.HttpConfigurationInput var1) {
      Map var2 = super.toRawEntity(var1);
      if (var1 != null) {
         String[] var3 = d;
         var2.put(var3[4], var1.getPort());
         var2.put(var3[1], var1.getProtocol());
         var2.put(var3[8], var1.getPath());
      }

      return var2;
   }

   protected HttpConfigurationDTO doCreate(HttpConfigurationDTO.HttpConfigurationInput var1) throws ObjectModelException {
      HttpConfigurationDTO var2 = (HttpConfigurationDTO)super.doCreate(var1);
      var1.getFinder().markCreated(var2.entity());
      return var2;
   }

   protected HttpConfigurationDTO doUpdate(HttpConfigurationDTO.HttpConfigurationInput var1, HttpConfiguration var2) throws ObjectModelException {
      HttpConfigurationDTO var3 = (HttpConfigurationDTO)super.doUpdate(var1, var2);
      var1.getFinder().markUpdated(var3.entity());
      return var3;
   }

   protected HttpConfigurationDTO doDelete(HttpConfigurationDTO.HttpConfigurationInput var1, HttpConfiguration var2) throws ObjectModelException {
      HttpConfigurationDTO var3 = (HttpConfigurationDTO)super.doDelete(var1, var2);
      var1.getFinder().markDeleted(var2);
      return var3;
   }

   protected void setEntity(HttpConfigurationDTO.HttpConfigurationInput var1, HttpConfiguration var2) {
      var2.setHost(var1.getHost());
      if (var1.getPort() != null) {
         var2.setPort(var1.getPort());
      }

      if (var1.getProtocol() != null) {
         var2.setProtocol(var1.getProtocol().internalProtocol());
      }

      var2.setPath(var1.getPath());
      var2.setUsername(var1.getUsername());
      if (var1.getSecurePasswordName() != null) {
         var2.setPasswordGoid(EntityResolver.toEntityGoidByName(this.c, var1.getSecurePasswordName()));
      }

      var2.setNtlmHost(var1.getNtlmHost());
      var2.setNtlmDomain(var1.getNtlmDomain());
      var2.setConnectTimeout(var1.getConnectTimeout());
      var2.setReadTimeout(var1.getReadTimeout());
      var2.setFollowRedirects(var1.isFollowRedirects());
      this.b(var1, var2);
      this.a(var1, var2);
   }

   protected void resetEntitySelectively(HttpConfigurationDTO.HttpConfigurationInput var1, HttpConfiguration var2) {
      var2.setPort(0);
      var2.setProtocol(null);
      var2.setTlsKeyUse(Option.DEFAULT);
      var2.setTlsVersion(null);
      var2.setTlsKeystoreGoid(Goid.parseGoid(d[0]));
      var2.setTlsKeystoreAlias(null);
      var2.setTlsCipherSuites(null);
      var2.setProxyUse(Option.DEFAULT);
      var2.setProxyConfiguration(new HttpProxyConfiguration());
   }

   protected HttpConfiguration findByInput(HttpConfigurationDTO.HttpConfigurationInput var1) throws FindException {
      return var1.getFinder().find(var1);
   }

   private void a(HttpConfigurationDTO.HttpConfigurationInput var1, HttpConfiguration var2) {
      var2.setProxyUse(var1.getProxyUse().innerValue());
      if (EntityFieldOption.CUSTOM.equals(var1.getProxyUse())) {
         HttpProxyConfiguration var3 = new HttpProxyConfiguration();
         var3.setHost(var1.getProxyConfiguration().getHost());
         var3.setPort(var1.getProxyConfiguration().getPort());
         var3.setUsername(var1.getProxyConfiguration().getUsername());
         if (var1.getProxyConfiguration().getSecurePasswordName() != null) {
            var3.setPasswordGoid(EntityResolver.toEntityGoidByName(this.c, var1.getProxyConfiguration().getSecurePasswordName()));
         }

         var2.setProxyConfiguration(var3);
      }
   }

   private void b(HttpConfigurationDTO.HttpConfigurationInput var1, HttpConfiguration var2) {
      var2.setTlsVersion(var1.getTlsVersion());
      if (Util.isNotEmpty(var1.getTlsCipherSuites())) {
         var2.setTlsCipherSuites(Util.buildCsvString(var1.getTlsCipherSuites()));
      }

      var2.setTlsKeyUse(var1.getTlsKeyUse().innerValue());
      if (EntityFieldOption.CUSTOM.equals(var1.getTlsKeyUse())) {
         var2.setTlsKeystoreAlias(var1.getTlsKeyAlias());
         var2.setTlsKeystoreGoid(Goid.parseGoid(var1.getTlsKeystoreId()));
      } else {
         var2.setTlsKeystoreGoid(Goid.parseGoid(d[6]));
      }
   }

   static {
      String[] var5 = new String[10];
      int var3 = 0;
      String var2 = "#.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}\bcl@9i[\u0001\u007f\u0004c\u007f[%\u0004cq]9\u0004cq]9\bcl@9i[\u0001\u007f #.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}\u0018{j[=EW\u0000uwH8tY\u001azqA\u0000gV\u000ft{]";
      int var4 = "#.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}\bcl@9i[\u0001\u007f\u0004c\u007f[%\u0004cq]9\u0004cq]9\bcl@9i[\u0001\u007f #.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}6\b^#.\u001f}\u0018{j[=EW\u0000uwH8tY\u001azqA\u0000gV\u000ft{]"
         .length();
      char var1 = ' ';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 23;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = c(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     d = var5;
                     b = Logger.getLogger(HttpConfigurationMutationResolver.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "G[\u007f\u0001\u0015D_h\u001cPy\u001aVIx\u001eMn.z[e\bEy8";
                  var4 = "G[\u007f\u0001\u0015D_h\u001cPy\u001aVIx\u001eMn.z[e\bEy8".length();
                  var1 = 4;
                  var7 = -1;
            }

            var10000 = 51;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

      return var10000;
   }

   private static String c(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 -> 4;
            case 1 -> 9;
            case 2 -> 56;
            case 3 -> 90;
            case 4 -> 17;
            case 5 -> 47;
            default -> 121;
         });
      }

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