package tc.oc.api.minecraft.logging; import java.util.Map; import java.util.Optional; import javax.inject.Inject; import net.kencochrane.raven.event.EventBuilder; import net.kencochrane.raven.event.helper.EventBuilderHelper; import tc.oc.api.docs.Server; import tc.oc.api.docs.virtual.DeployInfo; import tc.oc.api.exceptions.ApiNotConnected; import tc.oc.api.minecraft.config.MinecraftApiConfiguration; import tc.oc.commons.core.plugin.PluginFacet; import tc.oc.minecraft.logging.BetterRaven; /** * Tags Sentry events with the identity of the local server */ public class RavenServerTagger implements EventBuilderHelper, PluginFacet { private final MinecraftApiConfiguration config; private final Server server; @Inject RavenServerTagger(Optional<BetterRaven> raven, MinecraftApiConfiguration config, Server server) { this.config = config; this.server = server; raven.ifPresent(r -> r.addBuilderHelper(this)); } @Override public void helpBuildingEvent(EventBuilder eventBuilder) { try { eventBuilder.addTag("datacenter", config.datacenter()); eventBuilder.addTag("server", server.name()); eventBuilder.addTag("server_slug", server.bungee_name()); eventBuilder.addTag("family", server.family()); eventBuilder.addTag("box", config.box()); if(server.deploy_info() != null) { eventBuilder.addTag("nextgen_branch", server.deploy_info().nextgen().version().branch()); eventBuilder.addTag("nextgen_commit", server.deploy_info().nextgen().version().commit()); for(Map.Entry<String, DeployInfo.Version> pack : server.deploy_info().packages().entrySet()) { eventBuilder.addTag(pack.getKey() + "_commit", pack.getValue().commit()); } } } catch(ApiNotConnected e) { eventBuilder.addTag("server_id", config.serverId()); } } }