package com.l7tech.server.policy.bundle.ssgman.restman;

import com.l7tech.common.mime.ContentTypeHeader;
import com.l7tech.common.mime.NoSuchPartException;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.identity.UserBean;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.security.token.http.HttpBasicToken;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.message.PolicyEnforcementContextFactory;
import com.l7tech.server.policy.bundle.GatewayManagementDocumentUtilities;
import com.l7tech.server.policy.bundle.ssgman.BaseGatewayManagementInvoker;
import com.l7tech.server.policy.bundle.ssgman.GatewayManagementInvoker;
import com.l7tech.util.Charsets;
import com.l7tech.util.Pair;
import com.l7tech.util.Functions.Nullary;
import java.io.IOException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.xml.sax.SAXException;

public class RestmanInvoker extends BaseGatewayManagementInvoker {
   private static final String b;
   public static final String VAR_RESTMAN_ACTION;
   private static final String c;
   public static final String VAR_RESTMAN_URI;
   public static final String VAR_RESTMAN_CONTENT_TYPE;
   public static final String URL_1_0_BUNDLE;
   public static final String URL_1_0_BUNDLE_BATCH;
   private static final String d;
   public static final String UTF_8;
   private static final String[] f;

   public RestmanInvoker(@NotNull Nullary<Boolean> var1, @NotNull GatewayManagementInvoker var2) {
      if (var1 == null) {
         b(0);
      }

      if (var2 == null) {
         b(1);
      }

      super(var1, var2);
   }

   @NotNull
   private Pair<AssertionStatus, RestmanMessage> a(String var1) throws GatewayManagementDocumentUtilities.AccessDeniedManagementResponse, GatewayManagementDocumentUtilities.UnexpectedManagementResponse {
      try {
         Pair var10000 = this.callManagementAssertion(this.getContext(var1));
         if (var10000 == null) {
            b(2);
         }

         return var10000;
      } catch (GatewayManagementDocumentUtilities.AccessDeniedManagementResponse var2) {
         throw b(var2);
      }
   }

   protected Pair<AssertionStatus, RestmanMessage> callManagementAssertion(PolicyEnforcementContext var1) throws GatewayManagementDocumentUtilities.AccessDeniedManagementResponse, GatewayManagementDocumentUtilities.UnexpectedManagementResponse {
      AssertionStatus var2;
      try {
         var2 = this.gatewayManagementInvoker.checkRequest(var1);
      } catch (IOException | PolicyAssertionException var7) {
         String var10002 = var7.getMessage();
         String[] var5 = f;
         throw new RuntimeException(var5[3] + var10002, var7);
      }

      RestmanMessage var3;
      try {
         var3 = this.getRestmanMessage(var1);

         try {
            if (var3 == null) {
               throw new GatewayManagementDocumentUtilities.UnexpectedManagementResponse(f[22]);
            }
         } catch (IOException var6) {
            throw b(var6);
         }

         try {
            if (var3.isErrorResponse()) {
               throw new GatewayManagementDocumentUtilities.UnexpectedManagementResponse(var3.getAsFormattedString());
            }
         } catch (IOException var8) {
            throw b(var8);
         }
      } catch (SAXException | IOException | NoSuchPartException var9) {
         throw new RuntimeException(f[18] + var9.getMessage(), var9);
      }

      return new Pair(var2, var3);
   }

   public Pair<AssertionStatus, RestmanMessage> callManagementCheckInterrupted(@Nullable PolicyEnforcementContext param1, String param2) throws InterruptedException, GatewayManagementDocumentUtilities.AccessDeniedManagementResponse, GatewayManagementDocumentUtilities.UnexpectedManagementResponse {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnonnull 0d
      // 04: aload 0
      // 05: aload 2
      // 06: invokevirtual com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.a (Ljava/lang/String;)Lcom/l7tech/util/Pair;
      // 09: astore 3
      // 0a: goto 13
      // 0d: aload 0
      // 0e: aload 1
      // 0f: invokevirtual com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.callManagementAssertion (Lcom/l7tech/server/message/PolicyEnforcementContext;)Lcom/l7tech/util/Pair;
      // 12: astore 3
      // 13: goto 7f
      // 16: astore 4
      // 18: aload 4
      // 1a: invokevirtual com/l7tech/server/policy/bundle/GatewayManagementDocumentUtilities$UnexpectedManagementResponse.isCausedByMgmtAssertionInternalError ()Z
      // 1d: ifeq 4a
      // 20: aload 0
      // 21: getfield com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.cancelledCallback Lcom/l7tech/util/Functions$Nullary;
      // 24: invokeinterface com/l7tech/util/Functions$Nullary.call ()Ljava/lang/Object; 1
      // 29: checkcast java/lang/Boolean
      // 2c: invokevirtual java/lang/Boolean.booleanValue ()Z
      // 2f: ifeq 4a
      // 32: goto 39
      // 35: invokestatic com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 38: athrow
      // 39: new java/lang/InterruptedException
      // 3c: dup
      // 3d: getstatic com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.f [Ljava/lang/String;
      // 40: bipush 2
      // 41: aaload
      // 42: invokespecial java/lang/InterruptedException.<init> (Ljava/lang/String;)V
      // 45: athrow
      // 46: invokestatic com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 49: athrow
      // 4a: aload 4
      // 4c: athrow
      // 4d: astore 4
      // 4f: getstatic com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.logger Ljava/util/logging/Logger;
      // 52: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 55: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 58: ifeq 7c
      // 5b: getstatic com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.logger Ljava/util/logging/Logger;
      // 5e: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 61: aload 4
      // 63: invokevirtual com/l7tech/server/policy/bundle/GatewayManagementDocumentUtilities$AccessDeniedManagementResponse.getDeniedRequest ()Ljava/lang/String;
      // 66: getstatic com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.f [Ljava/lang/String;
      // 69: bipush 25
      // 6b: aaload
      // 6c: swap
      // 6d: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 72: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 75: goto 7c
      // 78: invokestatic com/l7tech/server/policy/bundle/ssgman/restman/RestmanInvoker.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7b: athrow
      // 7c: aload 4
      // 7e: athrow
      // 7f: aload 3
      // 80: areturn
      // try (0 -> 11): 12 com/l7tech/server/policy/bundle/GatewayManagementDocumentUtilities$UnexpectedManagementResponse
      // try (0 -> 11): 36 com/l7tech/server/policy/bundle/GatewayManagementDocumentUtilities$AccessDeniedManagementResponse
      // try (13 -> 22): 23 com/l7tech/server/policy/bundle/GatewayManagementDocumentUtilities$UnexpectedManagementResponse
      // try (16 -> 32): 32 com/l7tech/server/policy/bundle/GatewayManagementDocumentUtilities$UnexpectedManagementResponse
      // try (37 -> 51): 52 com/l7tech/server/policy/bundle/GatewayManagementDocumentUtilities$UnexpectedManagementResponse
   }

   public PolicyEnforcementContext getContext(String var1) {
      Message var2 = new Message();
      ContentTypeHeader var3 = ContentTypeHeader.XML_DEFAULT;

      try {
         var2.initialize(var3, var1.getBytes(Charsets.UTF8));
      } catch (IOException var10) {
         String var10002 = var10.getMessage();
         String[] var9 = f;
         throw new RuntimeException(var9[21] + var10002, var10);
      }

      b var4 = new b(this);
      var2.attachHttpRequestKnob(var4);
      Message var5 = new Message();
      var5.attachHttpResponseKnob(new a(this));
      PolicyEnforcementContext var6 = PolicyEnforcementContextFactory.createPolicyEnforcementContext(var2, var5);
      UserBean var7 = this.getAuthenticatedUser();

      label25: {
         try {
            if (var7 != null) {
               var6.getDefaultAuthenticationContext()
                  .addAuthenticationResult(new AuthenticationResult(var7, new HttpBasicToken(var7.getLogin(), "".toCharArray()), null, false));
               break label25;
            }
         } catch (IOException var11) {
            throw b(var11);
         }

         String[] var12 = f;
         logger.warning(var12[23]);
      }

      String[] var13 = f;
      var6.setVariable(var13[30], var13[29]);
      var6.setVariable(var13[17], ContentTypeHeader.XML_DEFAULT.getFullValue());
      var6.setVariable(var13[12], var13[16]);
      var6.setVariable(var13[7], var13[14]);
      PublishedService var8 = new PublishedService();
      var8.setRoutingUri(var13[27]);
      var6.setService(var8);
      return var6;
   }

   public RestmanMessage getRestmanMessage(PolicyEnforcementContext var1) throws IOException, NoSuchPartException, SAXException {
      return new RestmanMessage(var1.getResponse());
   }

   private static Exception b(Exception var0) {
      return var0;
   }

   static {
      String[] var5 = new String[32];
      int var3 = 0;
      String var2 = ";e-xYS;\fw?uSS!\u0011\na0o{^#\fd\u001dmr^-\bc549o-\u007fwP#\f 7bjW=\u001bu.xw]!Id;x{Q;\fd~hkWo\u001do~epF*\u001bn?`>W=\u001bo,?<n;tnW,\u001de:,w\\;\fr0mr\u0012*\u001br1~>[!\u001fo5epUo\u000ea*iiS6Im?b\u007fU*\u0004e0x>A*\u001bv7o{\bo>(r9ysW!\u001d 8cl\u0012\u000f'o*Bk^#Ip?~\u007f_*\u001de,,9\u0017<N 1j>\u0017<G%-,sG<\u001d 0cj\u0012-\f 0yr^\u0006Ui0ej\f\u0015;e-xYS;\fw?uSS!Ga=xw]!\u0015;e-xYS;\fw?uSS!Ga=xw]!\u0010X.n#|G!\rl;#|S;\nh\u0005<T\u0018!&=\no3#r\u0005;\fc6#mW=\u001fe,#n]#\u0000c'#|G!\rl;#mA(\u0004a0#lW<\u001dm?b1`*\u001at3mp{!\u001fo5il\u0012;e-xYS;\fw?uSS!Gu,e\u0016;e-xYS;\fw?uSS!Gb?\u007f{G=\u0000=\no3#r\u0005;\fc6#mW=\u001fe,#n]#\u0000c'#|G!\rl;#mA(\u0004a0#lW<\u001dm?b1`*\u001at3mp{!\u001fo5il\u00039U\n\u0017\na2`SS!\bg;a{\\;(s-ilF&\u0006n\u001e\u0001t*|$\u001d`\u0005o=mrZ \u001atd4.\n\u007fFr;\u007fj_.\u0007/\u001a;e-xYS;\fw?uSS!Gc1bjW!\u001dT'|{?<n;tnW,\u001de:,w\\;\fr0mr\u0012*\u001br1~>B.\u001bs7by\u0012(\bt;{\u007fKo\u0004a0myW\"\fn*,lW<\u0019o0\u007f{\bo*)N1xPG#\u0005 3ijZ \r {\u007f0\u0017<Im+\u007fj\u0012!\u0006t~~{F:\u001bn~bk^#\u0018\u000ea*iiS6$a0myW\"\fn*EpD \u0002e,@<n;tnW,\u001de:,w\\;\fr0mr\u0012*\u001br1~>B=\fp?~w\\(Ig?x{E.\u0010 3mpS(\fm;bj\u0012=\fq+imFuI1<n;tnW,\u001de:,{J,\fp*eq\\uIa~o\u007f^#Ir;\u007fk^;Iw?\u007f>W7\u0019e=x{Va;'o~mz_&\u0007i-xlS;\u0000v;,kA*\u001b 8ck\\+G \fioG*\u001at~xq\u0012&\u0007s*mr^o\u001ei2`>T.\u0000lp\u0016;e-xYS;\fw?uSS!Gb?\u007f{G=\u0000\u001a(c=imAo\re0e{Vo\u000fo,,lW>\u001ce-x$\u001a;e-xYS;\fw?uSS!Gc1bjW!\u001dT'|{\tFr;\u007fj_.\u0007*\u001e\u0001t*|$\u001d`\u0005o=mrZ \u001atd4.\n\u007fFr;\u007fj_.\u0007/\u0015X.n#|G!\rl;3jW<\u001d=8mrA*";
      int var4 = ";e-xYS;\fw?uSS!\u0011\na0o{^#\fd\u001dmr^-\bc549o-\u007fwP#\f 7bjW=\u001bu.xw]!Id;x{Q;\fd~hkWo\u001do~epF*\u001bn?`>W=\u001bo,?<n;tnW,\u001de:,w\\;\fr0mr\u0012*\u001br1~>[!\u001fo5epUo\u000ea*iiS6Im?b\u007fU*\u0004e0x>A*\u001bv7o{\bo>(r9ysW!\u001d 8cl\u0012\u000f'o*Bk^#Ip?~\u007f_*\u001de,,9\u0017<N 1j>\u0017<G%-,sG<\u001d 0cj\u0012-\f 0yr^\u0006Ui0ej\f\u0015;e-xYS;\fw?uSS!Ga=xw]!\u0015;e-xYS;\fw?uSS!Ga=xw]!\u0010X.n#|G!\rl;#|S;\nh\u0005<T\u0018!&=\no3#r\u0005;\fc6#mW=\u001fe,#n]#\u0000c'#|G!\rl;#mA(\u0004a0#lW<\u001dm?b1`*\u001at3mp{!\u001fo5il\u0012;e-xYS;\fw?uSS!Gu,e\u0016;e-xYS;\fw?uSS!Gb?\u007f{G=\u0000=\no3#r\u0005;\fc6#mW=\u001fe,#n]#\u0000c'#|G!\rl;#mA(\u0004a0#lW<\u001dm?b1`*\u001at3mp{!\u001fo5il\u00039U\n\u0017\na2`SS!\bg;a{\\;(s-ilF&\u0006n\u001e\u0001t*|$\u001d`\u0005o=mrZ \u001atd4.\n\u007fFr;\u007fj_.\u0007/\u001a;e-xYS;\fw?uSS!Gc1bjW!\u001dT'|{?<n;tnW,\u001de:,w\\;\fr0mr\u0012*\u001br1~>B.\u001bs7by\u0012(\bt;{\u007fKo\u0004a0myW\"\fn*,lW<\u0019o0\u007f{\bo*)N1xPG#\u0005 3ijZ \r {\u007f0\u0017<Im+\u007fj\u0012!\u0006t~~{F:\u001bn~bk^#\u0018\u000ea*iiS6$a0myW\"\fn*EpD \u0002e,@<n;tnW,\u001de:,w\\;\fr0mr\u0012*\u001br1~>B=\fp?~w\\(Ig?x{E.\u0010 3mpS(\fm;bj\u0012=\fq+imFuI1<n;tnW,\u001de:,{J,\fp*eq\\uIa~o\u007f^#Ir;\u007fk^;Iw?\u007f>W7\u0019e=x{Va;'o~mz_&\u0007i-xlS;\u0000v;,kA*\u001b 8ck\\+G \fioG*\u001at~xq\u0012&\u0007s*mr^o\u001ei2`>T.\u0000lp\u0016;e-xYS;\fw?uSS!Gb?\u007f{G=\u0000\u001a(c=imAo\re0e{Vo\u000fo,,lW>\u001ce-x$\u001a;e-xYS;\fw?uSS!Gc1bjW!\u001dT'|{\tFr;\u007fj_.\u0007*\u001e\u0001t*|$\u001d`\u0005o=mrZ \u001atd4.\n\u007fFr;\u007fj_.\u0007/\u0015X.n#|G!\rl;3jW<\u001d=8mrA*"
         .length();
      char var1 = 14;
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     f = var5;
                     String[] var9 = f;
                     URL_1_0_BUNDLE = f[31];
                     URL_1_0_BUNDLE_BATCH = var9[8];
                     d = var9[28];
                     b = var9[0];
                     VAR_RESTMAN_CONTENT_TYPE = var9[26];
                     VAR_RESTMAN_ACTION = var9[6];
                     UTF_8 = var9[9];
                     c = var9[24];
                     VAR_RESTMAN_URI = var9[11];
                     return;
                  }

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

                  var2 = "c=u \u0001\u000bcT/g-\u000b\u000by\u001f-t=\n\u0000v6{$\u001fyU4c";
                  var4 = "c=u \u0001\u000bcT/g-\u000b\u000by\u001f-t=\n\u0000v6{$\u001fyU4c".length();
                  var1 = 18;
                  var7 = -1;
            }

            var10000 = 62;
            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] ^ 41);
      }

      return var10000;
   }

   private static String b(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 -> 15;
            case 1 -> 102;
            case 2 -> 56;
            case 3 -> 106;
            case 4 -> 120;
            case 5 -> 84;
            default -> 41;
         });
      }

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