package com.l7tech.server.telemetry;

import com.ca.apim.gateway.extension.telemetry.TelemetryDataProvider;
import com.l7tech.server.GatewayState;
import com.l7tech.server.TelemetryPropertiesLoader;
import com.l7tech.server.event.system.ReadyForMessages;
import com.l7tech.server.event.system.Stopping;
import com.l7tech.server.extension.registry.telemetry.TelemetryDataProviderRegistry;
import com.l7tech.server.util.PostStartupApplicationListener;
import com.l7tech.util.Background;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang3.math.NumberUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationEvent;

public class GatewaySegmentPublisher implements PostStartupApplicationListener {
   public static final long DEFAULT_TELEMETRY_SCHEDULE_INTERVAL;
   private static final Logger a;
   private final TelemetryPropertiesLoader b;
   private final TelemetryDataProviderRegistry c;
   private final TelemetryService d;
   private final GatewayState e;
   private TelemetryTask f;
   private static final String[] g;

   public GatewaySegmentPublisher(
      @NotNull TelemetryPropertiesLoader var1, @NotNull TelemetryDataProviderRegistry var2, @NotNull TelemetryService var3, @NotNull GatewayState var4
   ) {
      if (var1 == null) {
         a(0);
      }

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

      if (var3 == null) {
         a(2);
      }

      if (var4 == null) {
         a(3);
      }

      super();
      this.b = var1;
      this.d = var3;
      this.e = var4;
      this.c = var2;
      this.c.addCallback(new a(this));
   }

   @Override
   public void onApplicationEvent(ApplicationEvent var1) {
      try {
         if (var1 instanceof ReadyForMessages) {
            this.a();
            this.a(this.c);
         }
      } catch (Exception var5) {
         throw a(var5);
      }

      if (var1 instanceof Stopping) {
         try {
            Background.cancel(this.f);
            this.d.close();
         } catch (Exception var4) {
            Exception var2 = var4;

            try {
               if (a.isLoggable(Level.WARNING)) {
                  a.log(Level.WARNING, g[0] + var2.getLocalizedMessage());
               }
            } catch (Exception var3) {
               throw a(var3);
            }
         }
      }
   }

   private void a() {
      for (TelemetryDataProvider var3 : this.c.getAllExtensions()) {
         try {
            this.d.identify(var3);
            if (a.isLoggable(Level.FINE)) {
               a.fine(g[10] + var3.getProductSku());
            }
         } catch (IllegalArgumentException var4) {
            throw a(var4);
         }
      }
   }

   private void a(TelemetryDataProviderRegistry var1) {
      String[] var5 = g;
      String var2 = this.b.getProperty(var5[9], null);
      long var3 = NumberUtils.toLong(var2, DEFAULT_TELEMETRY_SCHEDULE_INTERVAL);
      if (var3 <= 0L) {
         var3 = DEFAULT_TELEMETRY_SCHEDULE_INTERVAL;
      }

      try {
         if (a.isLoggable(Level.FINE)) {
            a.log(Level.FINE, g[3], var3);
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }

      this.f = new TelemetryTask(this.d, var1);
      Background.scheduleRepeated(this.f, 0L, var3);
   }

   static {
      String[] var5 = new String[11];
      int var3 = 0;
      String var2 = "g#Ba\u0001\b\u0018U-\u000b~\f\u0019LE-\\cD8]M'Fh\u0010\u001eA\u0001\u0011N\u007f\u0012\u0005[Dn\u000b3B-F\"\b[LD!C\"\u0017\tJW'Y\"\u0010\tTD/Ny\u0016\u0015\u0017f#_h\u0013\rAr'L`\u0001\u0002Lq7Ia\r\u001fPD0\u0019U'Gh\t\tLS;{\u007f\u000b\u001c]S6Bh\u0017 W@&N\u007f\u0019r'EiD\u0005VU'Y{\u0005\u0000\u0018R'_-\u0010\u0003\u0002\u00019\u001bp\fF#_h\u0013\rAr6Jy\u0001\u0019U'Gh\t\tLS;{\u007f\u000b\u001aQE'Y_\u0001\u000bQR6Yt\u0010U'Gh\t\tLS;xh\u0016\u001aQB'\u0006\u001d+Ed\u0010R>`0Lx\t\tVUbMb\u0016Lxo-_C\u0011\u0000T\u00012J\u007f\u0005\u0001]U'Y-CIK\u0006bDkDIK\u000fgX-\t\u0019KUbEb\u0010LZDbEx\b\u0000";
      int var4 = "g#Ba\u0001\b\u0018U-\u000b~\f\u0019LE-\\cD8]M'Fh\u0010\u001eA\u0001\u0011N\u007f\u0012\u0005[Dn\u000b3B-F\"\b[LD!C\"\u0017\tJW'Y\"\u0010\tTD/Ny\u0016\u0015\u0017f#_h\u0013\rAr'L`\u0001\u0002Lq7Ia\r\u001fPD0\u0019U'Gh\t\tLS;{\u007f\u000b\u001c]S6Bh\u0017 W@&N\u007f\u0019r'EiD\u0005VU'Y{\u0005\u0000\u0018R'_-\u0010\u0003\u0002\u00019\u001bp\fF#_h\u0013\rAr6Jy\u0001\u0019U'Gh\t\tLS;{\u007f\u000b\u001aQE'Y_\u0001\u000bQR6Yt\u0010U'Gh\t\tLS;xh\u0016\u001aQB'\u0006\u001d+Ed\u0010R>`0Lx\t\tVUbMb\u0016Lxo-_C\u0011\u0000T\u00012J\u007f\u0005\u0001]U'Y-CIK\u0006bDkDIK\u000fgX-\t\u0019KUbEb\u0010LZDbEx\b\u0000"
         .length();
      char var1 = '&';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 2;
         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) {
                     g = var5;
                     DEFAULT_TELEMETRY_SCHEDULE_INTERVAL = TimeUnit.DAYS.toMillis(1L);
                     a = Logger.getLogger(GatewaySegmentPublisher.class.getName());
                     return;
                  }

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

                  var2 = "\u0000r\u0012=\\\\\u0019\u0006nP+RQ\b\u0010b\u0012=\u001fP\u0003\u0000r\f.PU#'r\u0010,\u0011V\u0003Td\n9CMM\u0000r\u0012=\\\\\u0019\u0006n^<PM\fTq\f7\\\u0003M";
                  var4 = "\u0000r\u0012=\\\\\u0019\u0006nP+RQ\b\u0010b\u0012=\u001fP\u0003\u0000r\f.PU#'r\u0010,\u0011V\u0003Td\n9CMM\u0000r\u0012=\\\\\u0019\u0006n^<PM\fTq\f7\\\u0003M"
                     .length();
                  var1 = 27;
                  var7 = -1;
            }

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

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

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

      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 -> 35;
            case 1 -> 64;
            case 2 -> 41;
            case 3 -> 15;
            case 4 -> 102;
            case 5 -> 110;
            default -> 58;
         });
      }

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