package tc.oc.api.minecraft.sessions;
import java.net.InetAddress;
import java.time.Instant;
import java.util.UUID;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import tc.oc.api.docs.PlayerId;
import tc.oc.api.docs.Server;
import tc.oc.api.docs.Session;
import tc.oc.api.docs.UserId;
import tc.oc.api.minecraft.users.UserStore;
import tc.oc.minecraft.api.entity.Player;
@Singleton
public class LocalSessionFactory {
@Inject Server localServer;
@Inject UserStore<Player> userStore;
public Session newSession(UserId userId, InetAddress ip) {
final String id = UUID.randomUUID().toString();
final Instant start = Instant.now();
final PlayerId playerId = userStore.playerId(userId);
return new Session() {
@Override
public String _id() {
return id;
}
@Override
public String family_id() {
return localServer.family();
}
@Override
public String server_id() {
return localServer._id();
}
@Override
public PlayerId user() {
return playerId;
}
@Override
public @Nullable String nickname() {
return null;
}
@Override
public @Nullable String nickname_lower() {
return null;
}
@Override
public String ip() {
return ip.getHostAddress();
}
@Override
public Instant start() {
return start;
}
@Override
public @Nullable Instant end() {
return null;
}
};
}
}