package com.l7tech.server.policy.assertion.credential;

import com.l7tech.common.http.GenericHttpClient;
import com.l7tech.common.http.GenericHttpException;
import com.l7tech.common.http.HttpConstants;
import com.l7tech.common.http.HttpHeaders;
import com.l7tech.security.wsfederation.FederationPassiveClient;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.RoutingResultListener;
import com.l7tech.xml.saml.SamlAssertion;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;

class c implements RoutingResultListener {
   final GenericHttpClient val$httpClient;
   final SamlAssertion val$samlAssertion;
   final String val$replyUrl;
   final String val$contextUrl;
   final AbstractServerWsFederationPassiveRequestProfile this$0;
   private static final String[] a;

   c(AbstractServerWsFederationPassiveRequestProfile var1, GenericHttpClient var2, SamlAssertion var3, String var4, String var5) {
      this.this$0 = var1;
      this.val$httpClient = var2;
      this.val$samlAssertion = var3;
      this.val$replyUrl = var4;
      this.val$contextUrl = var5;
   }

   @Override
   public boolean reroute(URL var1, int var2, HttpHeaders var3, PolicyEnforcementContext var4) {
      boolean var5 = false;

      try {
         if (var2 != 302 && var2 != 303) {
            return var5;
         }
      } catch (AbstractServerWsFederationPassiveRequestProfile.AuthRequiredException var15) {
         throw a(var15);
      }

      try {
         String var6 = var3.getOnlyOneValue(HttpConstants.HEADER_LOCATION);

         try {
            if (var6 == null) {
               AbstractServerWsFederationPassiveRequestProfile.access$400(this.this$0).info(a[2]);
               return var5;
            }
         } catch (AbstractServerWsFederationPassiveRequestProfile.AuthRequiredException var12) {
            throw a(var12);
         }

         if (FederationPassiveClient.isFederationServerUrl(new URL(var1, var6))) {
            try {
               try {
                  if (AbstractServerWsFederationPassiveRequestProfile.access$500(this.this$0).isLoggable(Level.FINER)) {
                     AbstractServerWsFederationPassiveRequestProfile.access$600(this.this$0).log(Level.FINER, a[0]);
                  }
               } catch (AbstractServerWsFederationPassiveRequestProfile.AuthRequiredException var9) {
                  throw a(var9);
               }

               this.this$0.a(var4, this.val$httpClient, this.val$samlAssertion, this.val$replyUrl, this.val$contextUrl);
               var5 = true;
            } catch (AbstractServerWsFederationPassiveRequestProfile.AuthRequiredException var10) {
            } catch (AbstractServerWsFederationPassiveRequestProfile.StopAndAuditException var11) {
               AbstractServerWsFederationPassiveRequestProfile.access$700(this.this$0, var11.getAssertionMessage(), null, var11.getCause());
            }
         }
      } catch (GenericHttpException var13) {
         Logger var10000 = AbstractServerWsFederationPassiveRequestProfile.access$800(this.this$0);
         String[] var8 = a;
         var10000.info(var8[3]);
      } catch (MalformedURLException var14) {
         AbstractServerWsFederationPassiveRequestProfile.access$900(this.this$0).log(Level.INFO, a[1], var14);
      }

      return var5;
   }

   @Override
   public void routed(URL var1, int var2, HttpHeaders var3, PolicyEnforcementContext var4) {
   }

   @Override
   public void failed(URL var1, Throwable var2, PolicyEnforcementContext var3) {
   }

   private static AbstractServerWsFederationPassiveRequestProfile.AuthRequiredException a(
      AbstractServerWsFederationPassiveRequestProfile.AuthRequiredException var0
   ) {
      return var0;
   }

   static {
      String[] var5 = new String[4];
      int var3 = 0;
      String var2 = "?\u0014C\u007fXg\u0017O/\u007f@TgP\u001b40XT{\u0006\u00068u\u000bPo\u0004\n)0JD}\u0018O=qB]|\u0002\nu\u0015&5fJ]`\u0014O)uOX{\u0015\f/0^Ce^";
      int var4 = "?\u0014C\u007fXg\u0017O/\u007f@TgP\u001b40XT{\u0006\u00068u\u000bPo\u0004\n)0JD}\u0018O=qB]|\u0002\nu\u0015&5fJ]`\u0014O)uOX{\u0015\f/0^Ce^"
         .length();
      char var1 = ',';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     a = var5;
                     return;
                  }

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

                  var2 = "\u0007\u0014Gk|A5n\u0012TktM#=ZWx\u007fEq=\u001fC|yK4bZ\\cc[8 \u001d\u0011xuL8<\u001fR~0D>-\u001bEc\u007fF\u007f:\u0007\u0014Gk|A5n\u0012TktM#=ZWx\u007fEq=\u001fC|yK4bZ\\\u007f|\\8>\u0016T*bM5'\bTid\b=!\u0019P~yG?=T";
                  var4 = "\u0007\u0014Gk|A5n\u0012TktM#=ZWx\u007fEq=\u001fC|yK4bZ\\cc[8 \u001d\u0011xuL8<\u001fR~0D>-\u001bEc\u007fF\u007f:\u0007\u0014Gk|A5n\u0012TktM#=ZWx\u007fEq=\u001fC|yK4bZ\\\u007f|\\8>\u0016T*bM5'\bTid\b=!\u0019P~yG?=T"
                     .length();
                  var1 = '8';
                  var7 = -1;
            }

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

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

      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 -> 38;
            case 1 -> 18;
            case 2 -> 89;
            case 3 -> 98;
            case 4 -> 120;
            case 5 -> 64;
            default -> 57;
         });
      }

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