api header support, team api integration
This commit is contained in:
		| @@ -0,0 +1,23 @@ | ||||
| package eu.mhsl.craftattack.spawn.craftattack.api; | ||||
|  | ||||
| import eu.mhsl.craftattack.spawn.core.config.Configuration; | ||||
| import org.bukkit.configuration.ConfigurationSection; | ||||
|  | ||||
| import java.net.URI; | ||||
| import java.net.URISyntaxException; | ||||
| import java.util.Objects; | ||||
|  | ||||
| public class EventServerApi { | ||||
|     private final static ConfigurationSection apiConfig = Objects.requireNonNull(Configuration.cfg.getConfigurationSection("event")); | ||||
|     public final static String basePath = apiConfig.getString("api"); | ||||
|  | ||||
|     public static URI getBaseUri() { | ||||
|         Objects.requireNonNull(basePath); | ||||
|         try { | ||||
|             return new URI(basePath); | ||||
|         } catch(URISyntaxException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,29 @@ | ||||
| package eu.mhsl.craftattack.spawn.craftattack.api.repositories; | ||||
|  | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.ReqResp; | ||||
| import eu.mhsl.craftattack.spawn.craftattack.api.EventServerApi; | ||||
|  | ||||
| import java.util.UUID; | ||||
|  | ||||
| public class EventRepository extends HttpRepository { | ||||
|     public EventRepository() { | ||||
|         super(EventServerApi.getBaseUri()); | ||||
|     } | ||||
|  | ||||
|     public record CreatedRoom(UUID uuid) { | ||||
|     } | ||||
|  | ||||
|     public record QueueRoom(UUID player, UUID room) { | ||||
|         public record Response(String error) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public ReqResp<CreatedRoom> createSession() { | ||||
|         return this.post("room", null, CreatedRoom.class); | ||||
|     } | ||||
|  | ||||
|     public ReqResp<QueueRoom.Response> queueRoom(QueueRoom request) { | ||||
|         return this.post("queueRoom", request, QueueRoom.Response.class); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,28 @@ | ||||
| package eu.mhsl.craftattack.spawn.craftattack.api.repositories; | ||||
|  | ||||
| import com.google.common.reflect.TypeToken; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.ReqResp; | ||||
| import eu.mhsl.craftattack.spawn.common.api.CraftAttackApi; | ||||
|  | ||||
| import java.lang.reflect.Type; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.UUID; | ||||
|  | ||||
| public class FeedbackRepository extends HttpRepository { | ||||
|     public FeedbackRepository() { | ||||
|         super(CraftAttackApi.getBaseUri(), new RequestModifier(CraftAttackApi::withAuthorizationSecret, null)); | ||||
|     } | ||||
|  | ||||
|     public record Request(String event, List<UUID> users) { | ||||
|     } | ||||
|  | ||||
|     public ReqResp<Map<UUID, String>> createFeedbackUrls(Request data) { | ||||
|         final Type responseType = new TypeToken<Map<UUID, String>>() { | ||||
|         }.getType(); | ||||
|         ReqResp<Object> rawData = this.post("feedback", data, Object.class); | ||||
|         // TODO: use convertToTypeToken from ReqResp | ||||
|         return new ReqResp<>(rawData.status(), this.gson.fromJson(this.gson.toJson(rawData.data()), responseType)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,31 @@ | ||||
| package eu.mhsl.craftattack.spawn.craftattack.api.repositories; | ||||
|  | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.ReqResp; | ||||
| import eu.mhsl.craftattack.spawn.common.api.CraftAttackApi; | ||||
|  | ||||
| import java.util.UUID; | ||||
|  | ||||
| public class WhitelistRepository extends HttpRepository { | ||||
|     public WhitelistRepository() { | ||||
|         super(CraftAttackApi.getBaseUri(), new RequestModifier(CraftAttackApi::withAuthorizationSecret, null)); | ||||
|     } | ||||
|  | ||||
|     public record UserData( | ||||
|         UUID uuid, | ||||
|         String username, | ||||
|         String firstname, | ||||
|         String lastname, | ||||
|         Long banned_until, | ||||
|         Long outlawed_until | ||||
|     ) { | ||||
|     } | ||||
|  | ||||
|     public ReqResp<UserData> getUserData(UUID userId) { | ||||
|         return this.get( | ||||
|             "user", | ||||
|             parameters -> parameters.addParameter("uuid", userId.toString()), | ||||
|             UserData.class | ||||
|         ); | ||||
|     } | ||||
| } | ||||
| @@ -2,14 +2,14 @@ package eu.mhsl.craftattack.spawn.craftattack.appliances.metaGameplay.event; | ||||
|  | ||||
| import eu.mhsl.craftattack.spawn.core.Main; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.ReqResp; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.repositories.EventRepository; | ||||
| import eu.mhsl.craftattack.spawn.craftattack.api.repositories.EventRepository; | ||||
| import eu.mhsl.craftattack.spawn.core.api.server.HttpServer; | ||||
| import eu.mhsl.craftattack.spawn.core.appliance.Appliance; | ||||
| import eu.mhsl.craftattack.spawn.core.appliance.ApplianceCommand; | ||||
| import eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.customAdvancements.Advancements; | ||||
| import eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.customAdvancements.CustomAdvancements; | ||||
| import eu.mhsl.craftattack.spawn.core.util.IteratorUtil; | ||||
| import eu.mhsl.craftattack.spawn.core.util.api.HttpStatus; | ||||
| import eu.mhsl.craftattack.spawn.core.api.HttpStatus; | ||||
| import eu.mhsl.craftattack.spawn.core.util.entity.DisplayVillager; | ||||
| import eu.mhsl.craftattack.spawn.core.util.listener.DismissInventoryOpenFromHolder; | ||||
| import eu.mhsl.craftattack.spawn.core.util.listener.PlayerInteractAtEntityEventListener; | ||||
|   | ||||
| @@ -2,10 +2,10 @@ package eu.mhsl.craftattack.spawn.craftattack.appliances.metaGameplay.feedback; | ||||
|  | ||||
| import eu.mhsl.craftattack.spawn.core.Main; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.ReqResp; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.repositories.FeedbackRepository; | ||||
| import eu.mhsl.craftattack.spawn.craftattack.api.repositories.FeedbackRepository; | ||||
| import eu.mhsl.craftattack.spawn.core.appliance.Appliance; | ||||
| import eu.mhsl.craftattack.spawn.core.appliance.ApplianceCommand; | ||||
| import eu.mhsl.craftattack.spawn.core.util.api.HttpStatus; | ||||
| import eu.mhsl.craftattack.spawn.core.api.HttpStatus; | ||||
| import net.kyori.adventure.text.Component; | ||||
| import net.kyori.adventure.text.ComponentBuilder; | ||||
| import net.kyori.adventure.text.TextComponent; | ||||
|   | ||||
| @@ -2,10 +2,10 @@ package eu.mhsl.craftattack.spawn.craftattack.appliances.tooling.whitelist; | ||||
|  | ||||
| import eu.mhsl.craftattack.spawn.core.Main; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.ReqResp; | ||||
| import eu.mhsl.craftattack.spawn.core.api.client.repositories.WhitelistRepository; | ||||
| import eu.mhsl.craftattack.spawn.craftattack.api.repositories.WhitelistRepository; | ||||
| import eu.mhsl.craftattack.spawn.core.api.server.HttpServer; | ||||
| import eu.mhsl.craftattack.spawn.core.appliance.Appliance; | ||||
| import eu.mhsl.craftattack.spawn.core.util.api.HttpStatus; | ||||
| import eu.mhsl.craftattack.spawn.core.api.HttpStatus; | ||||
| import eu.mhsl.craftattack.spawn.core.util.server.Floodgate; | ||||
| import eu.mhsl.craftattack.spawn.core.util.text.DisconnectInfo; | ||||
| import eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.outlawed.Outlawed; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user