package com.l7tech.gateway.pm2.graphql.service;

import com.l7tech.gateway.common.resources.ResourceAdmin;
import com.l7tech.gateway.common.service.ServiceAdmin;
import com.l7tech.gateway.pm2.graphql.beans.entity.DocType;
import com.l7tech.gateway.pm2.graphql.beans.entity.PM2ValidationResponseDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.URLResourceDocumentDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.WSDLOperationsDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.WsdlMimeContentDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.WsdlProcessRequestDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.WsdlProcessResponseDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.WsdlRequestOperationDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.WsdlResponseOperationDTO;
import com.l7tech.gateway.pm2.graphql.beans.entity.XmlSchemaDetailsFromServiceDTO;
import com.l7tech.gateway.pm2.graphql.helper.PM2ResourcesHelper;
import com.l7tech.gateway.pm2.graphql.helper.PM2WsdlHelper;
import com.l7tech.json.JsonSchemaVersion;
import io.leangen.graphql.annotations.GraphQLArgument;
import io.leangen.graphql.annotations.GraphQLNonNull;
import io.leangen.graphql.annotations.GraphQLQuery;
import java.util.Collection;
import org.springframework.context.ApplicationContext;

public class PM2ResourcesService {
   private final PM2ResourcesHelper a;
   private final PM2WsdlHelper b;
   private static final String[] c;

   public PM2ResourcesService(ApplicationContext var1) {
      String[] var4 = c;
      ServiceAdmin var2 = (ServiceAdmin)var1.getBean(var4[1]);
      ResourceAdmin var3 = (ResourceAdmin)var1.getBean(var4[0]);
      this.a = new PM2ResourcesHelper(var2, var3);
      this.b = new PM2WsdlHelper(var2);
   }

   @GraphQLQuery(name = "retrieveDocumentFromUrl")
   public URLResourceDocumentDTO retrieveDocumentFromUrl(@GraphQLArgument(name = "url") String var1, @GraphQLArgument(name = "docType") DocType var2) {
      return this.a.retrieveDocumentFromUrl(var1, var2);
   }

   @GraphQLQuery(name = "validateJsonSchemaDocument")
   public URLResourceDocumentDTO validateJsonSchemaDocument(
      @GraphQLArgument(name = "document") String var1, @GraphQLArgument(name = "schemaVersion") JsonSchemaVersion var2
   ) {
      return this.a.validateJsonSchemaDocument(var1, var2);
   }

   @GraphQLQuery(name = "validateXmlSchemaContent")
   public URLResourceDocumentDTO validateXmlSchemaContent(@GraphQLArgument(name = "url") String var1, @GraphQLArgument(name = "xmldocument") String var2) {
      return this.a.validateXmlSchemaContent(var1, var2);
   }

   @GraphQLQuery(name = "retrieveXMLSchemaFromService")
   public XmlSchemaDetailsFromServiceDTO retrieveXMLSchemaFromService(@GraphQLArgument(name = "serviceId") String var1) {
      return this.a.retrieveXMLSchemaFromService(var1);
   }

   @GraphQLQuery(name = "prettifyXml")
   public String prettifyXml(@GraphQLArgument(name = "xmlInput") String var1) {
      return this.a.prettifyXml(var1);
   }

   @GraphQLQuery(name = "retrieveWSDLOperationsFromServiceId")
   public WSDLOperationsDTO retrieveWSDLOperationsFromServiceId(@GraphQLArgument(name = "serviceId") String var1) {
      return this.b.getWsdlOperations(var1);
   }

   @GraphQLQuery(name = "retrieveWsdlRequestOperations")
   public Collection<WsdlRequestOperationDTO> retrieveWsdlRequestOperations(@GraphQLArgument(name = "serviceId") String var1) {
      return this.b.retrieveWsdlRequestOperations(var1);
   }

   @GraphQLQuery(name = "retrieveWsdlResponseOperations")
   public Collection<WsdlResponseOperationDTO> retrieveWsdlResponseOperations(@GraphQLArgument(name = "serviceId") String var1) {
      return this.b.retrieveWsdlResponseOperations(var1);
   }

   @GraphQLQuery(name = "retrieveWsdlMimeContent")
   public Collection<WsdlMimeContentDTO> retrieveWsdlMimeContent(@GraphQLArgument(name = "serviceId") String var1) {
      return this.b.retrieveWsdlMimeContent(var1);
   }

   @GraphQLQuery(name = "validateXsltStyleSheet")
   public PM2ValidationResponseDTO validateXsltStyleSheet(
      @GraphQLArgument(name = "xsltStylesheet") String var1, @GraphQLArgument(name = "xsltVersion") String var2
   ) {
      return this.a.validateXsltStyleSheet(var1, var2);
   }

   @GraphQLQuery(name = "validateXacmlPolicy")
   public PM2ValidationResponseDTO validateXacmlPolicy(@GraphQLArgument(name = "xacmlPolicy") String var1) {
      return this.a.validateXacmlPolicy(var1);
   }

   @GraphQLQuery(name = "processWsdl", description = "Process a WSDL and return it with all imports for GraphMan consumption")
   public WsdlProcessResponseDTO processWsdl(
      @GraphQLArgument(name = "request", description = "WSDL processing request") @GraphQLNonNull WsdlProcessRequestDTO var1
   ) {
      return this.b.processWsdlRequest(var1);
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = ".A\\7L*O9eK5P6\f/A].P;I\u001d@B1W";
      int var4 = ".A\\7L*O9eK5P6\f/A].P;I\u001d@B1W".length();
      char var1 = '\r';
      int var0 = -1;

      while (true) {
         String var10002 = a(a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            c = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

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

      return var10000;
   }

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

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 92;
            case 1 -> 36;
            case 2 -> 47;
            case 3 -> 88;
            case 4 -> 57;
            case 5 -> 88;
            default -> 44;
         });
      }

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