package tc.oc.minecraft.analytics;
import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.common.collect.ImmutableSet;
import com.google.common.eventbus.Subscribe;
import tc.oc.analytics.Tag;
import tc.oc.analytics.TagSetBuilder;
import tc.oc.analytics.Tagger;
import tc.oc.api.docs.Server;
import tc.oc.api.minecraft.servers.LocalServerReconfigureEvent;
import tc.oc.commons.core.plugin.PluginFacet;
import tc.oc.commons.core.util.Lazy;
@Singleton
public class ServerTagger implements Tagger, PluginFacet {
private final Lazy<ImmutableSet<Tag>> tags;
@Inject ServerTagger(Server server) {
this.tags = Lazy.from(() -> {
final TagSetBuilder builder = new TagSetBuilder();
builder
.add("server", server.slug())
.add("datacenter", server.datacenter())
.add("box", server.box())
.add("network", server.network().name().toLowerCase())
.add("role", server.role().name().toLowerCase())
.add("visibility", server.visibility().name().toLowerCase())
.add("family", server.family())
.addAll("realm", server.realms());
if(server.game_id() != null) {
builder.add("game", server.game_id());
}
return builder.build();
});
}
@Override
public ImmutableSet<Tag> tags() {
return tags.get();
}
@Subscribe
void reconfigure(LocalServerReconfigureEvent event) {
tags.clear();
}
}