package com.l7tech.external.assertions.gatewaymanagement.server.rest.resource;

import com.l7tech.external.assertions.gatewaymanagement.server.rest.transformers.APITransformer;
import com.l7tech.gateway.api.Item;
import com.l7tech.gateway.api.ItemBuilder;
import com.l7tech.gateway.api.ItemsList;
import com.l7tech.gateway.api.ItemsListBuilder;
import com.l7tech.gateway.api.Link;
import com.l7tech.gateway.api.ManagedObjectFactory;
import com.l7tech.util.Functions;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.ResponseBuilder;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.jetbrains.annotations.NotNull;

public class RestEntityResourceUtils {
   private static final String[] a;

   public static <R> Item<R> createTemplateItem(@NotNull R var0, @NotNull URLAccessible<R> var1, @NotNull String var2) {
      try {
         if (var0 == null) {
            a(0);
         }
      } catch (WebApplicationException var5) {
         throw a(var5);
      }

      try {
         if (var1 == null) {
            a(1);
         }
      } catch (WebApplicationException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(2);
         }
      } catch (WebApplicationException var4) {
         throw a(var4);
      }

      return (Item<R>)new ItemBuilder(var1.getResourceType() + a[9], var1.getResourceType())
         .addLink(ManagedObjectFactory.createLink(Link.LINK_REL_SELF, var2))
         .addLinks((Collection)Functions.reduce(var1.getRelatedLinks(null), new ArrayList(), new e()))
         .setContent(var0)
         .build();
   }

   public static <R> ItemsList<R> createItemsList(
      @NotNull List<R> var0, @NotNull APITransformer<R, ?> var1, @NotNull URLAccessible<R> var2, @NotNull String var3
   ) {
      try {
         if (var0 == null) {
            a(3);
         }
      } catch (WebApplicationException var7) {
         throw a(var7);
      }

      try {
         if (var1 == null) {
            a(4);
         }
      } catch (WebApplicationException var9) {
         throw a(var9);
      }

      try {
         if (var2 == null) {
            a(5);
         }
      } catch (WebApplicationException var6) {
         throw a(var6);
      }

      try {
         if (var3 == null) {
            a(6);
         }
      } catch (WebApplicationException var8) {
         throw a(var8);
      }

      List var4 = Functions.map(var0, new f(var1, var2));
      String var10002 = var1.getResourceType();
      String[] var5 = a;
      return (ItemsList<R>)new ItemsListBuilder(var10002 + var5[8], var5[12])
         .addLink(ManagedObjectFactory.createLink(Link.LINK_REL_SELF, var3))
         .addLinks((Collection)Functions.reduce(var2.getRelatedLinks(null), new ArrayList(), new g()))
         .setContent(var4)
         .build();
   }

   public static <R> Item<R> createGetResponseItem(@NotNull R var0, @NotNull APITransformer<R, ?> var1, @NotNull URLAccessible<R> var2) {
      try {
         if (var0 == null) {
            a(7);
         }
      } catch (WebApplicationException var5) {
         throw a(var5);
      }

      try {
         if (var1 == null) {
            a(8);
         }
      } catch (WebApplicationException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(9);
         }
      } catch (WebApplicationException var4) {
         throw a(var4);
      }

      return (Item<R>)new ItemBuilder(var1.convertToItem(var0)).addLink(var2.getLink(var0)).addLinks(var2.getRelatedLinks(var0)).build();
   }

   public static <R> Response createCreateOrUpdatedResponseItem(R var0, APITransformer<R, ?> var1, URLAccessible<R> var2, boolean var3) {
      Link var4 = var2.getLink(var0);
      ResponseBuilder var5;
      if (var3) {
         try {
            var5 = Response.created(new URI(var4.getUri()));
         } catch (URISyntaxException var7) {
            throw new WebApplicationException(a[6] + var4, var7);
         }
      } else {
         var5 = Response.ok();
      }

      return var5.entity(new ItemBuilder(var1.convertToItem(var0)).setContent(null).addLink(var4).addLinks(var2.getRelatedLinks(var0)).build()).build();
   }

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

   static {
      String[] var5 = new String[15];
      int var3 = 0;
      String var2 = "$T\u0001\u000bcfJ\"K\u0014\u0006vw{\u000eR\u0001\u0007\u0015$T\u0001\u000bcfY\"R6\u000fdsq)U\u0001#cfs\u000f$T\u0001\u000bcfW3C\t\u0019[jm3\u00074C\b\fBqr\u000b3T\u0005\u0004deq5K\u0001\u0018\b5C\u0017\u0005bq}\"\u0013\u000eH\u0012\u000b{jzgs6#7ak.J\u0010P7\t5C\u0017\u0005bq}\"U\u0005gj\r\u0019c\tgr\u0001\u0007go\u007f3C>\u0006T\u0003\u001fzfp3\u0006\u0002\u0005e#^\tI\u0010$borgV\u0005\u0018vn{3C\u0016J0&m`\u0006\u000b\f7&mi\u0003\u0017Jzvm3\u0006\n\u0005c#|\"\u0006\n\u001f{o\r2T\b+t`{4U\r\b{f\u0004\u000bO\u0017\u001e";
      int var4 = "$T\u0001\u000bcfJ\"K\u0014\u0006vw{\u000eR\u0001\u0007\u0015$T\u0001\u000bcfY\"R6\u000fdsq)U\u0001#cfs\u000f$T\u0001\u000bcfW3C\t\u0019[jm3\u00074C\b\fBqr\u000b3T\u0005\u0004deq5K\u0001\u0018\b5C\u0017\u0005bq}\"\u0013\u000eH\u0012\u000b{jzgs6#7ak.J\u0010P7\t5C\u0017\u0005bq}\"U\u0005gj\r\u0019c\tgr\u0001\u0007go\u007f3C>\u0006T\u0003\u001fzfp3\u0006\u0002\u0005e#^\tI\u0010$borgV\u0005\u0018vn{3C\u0016J0&m`\u0006\u000b\f7&mi\u0003\u0017Jzvm3\u0006\n\u0005c#|\"\u0006\n\u001f{o\r2T\b+t`{4U\r\b{f\u0004\u000bO\u0017\u001e"
         .length();
      char var1 = 18;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 42;
         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 = "\\1q=\u0003L\u0012Z=t=\n\u0003\u0012Z,rs\u0003T\u0007L-y`\u001b\u0012\tQ-3u\u000e\u000f\u0003H?e\u007f\u000e\u0015\u0007X;qw\u0001\u000fIL;nd\n\tIM;of@\t\u0003L1i`\f\u001eIm;of*\u0015\u0012V*e@\n\b\tJ,\u007fw:\u000f\u000fS-\u000bK;qb\u0003\u001a\u0012Z\u000bn~";
                  var4 = "\\1q=\u0003L\u0012Z=t=\n\u0003\u0012Z,rs\u0003T\u0007L-y`\u001b\u0012\tQ-3u\u000e\u000f\u0003H?e\u007f\u000e\u0015\u0007X;qw\u0001\u000fIL;nd\n\tIM;of@\t\u0003L1i`\f\u001eIm;of*\u0015\u0012V*e@\n\b\tJ,\u007fw:\u000f\u000fS-\u000bK;qb\u0003\u001a\u0012Z\u000bn~"
                     .length();
                  var1 = ']';
                  var7 = -1;
            }

            var10000 = 82;
            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] ^ 52);
      }

      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 -> 109;
            case 1 -> 12;
            case 2 -> 78;
            case 3 -> 64;
            case 4 -> 61;
            case 5 -> 41;
            default -> 52;
         });
      }

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