61 lines
2.4 KiB
Java
61 lines
2.4 KiB
Java
package tc.oc.api.ocn;
|
|
|
|
import javax.inject.Inject;
|
|
import javax.inject.Singleton;
|
|
|
|
import com.damnhandy.uri.template.UriTemplate;
|
|
import com.google.common.util.concurrent.ListenableFuture;
|
|
import tc.oc.api.docs.Session;
|
|
import tc.oc.api.docs.UserId;
|
|
import tc.oc.api.docs.virtual.ServerDoc;
|
|
import tc.oc.api.docs.virtual.SessionDoc;
|
|
import tc.oc.api.http.HttpOption;
|
|
import tc.oc.api.http.QueryUri;
|
|
import tc.oc.api.message.types.FindMultiResponse;
|
|
import tc.oc.api.model.HttpModelService;
|
|
import tc.oc.api.model.ModelMeta;
|
|
import tc.oc.api.sessions.SessionService;
|
|
import tc.oc.api.sessions.SessionStartRequest;
|
|
|
|
@Singleton
|
|
class OCNSessionService extends HttpModelService<Session, SessionDoc.Partial> implements SessionService {
|
|
|
|
@Inject private ModelMeta<Session, SessionDoc.Partial> meta;
|
|
|
|
@Override
|
|
public ListenableFuture<Session> start(SessionStartRequest request) {
|
|
return this.client().post(collectionUri("start"), request, Session.class, HttpOption.INFINITE_RETRY);
|
|
}
|
|
|
|
@Override
|
|
public ListenableFuture<Session> finish(Session session) {
|
|
return client().post(memberUri(session, "finish"), null, Session.class, HttpOption.INFINITE_RETRY);
|
|
}
|
|
|
|
@Override
|
|
public ListenableFuture<Session> online(UserId player) {
|
|
return client().get(UriTemplate.fromTemplate(collectionUri("online") + "/{player}").set("player", player.player_id()).expand(),
|
|
Session.class,
|
|
HttpOption.INFINITE_RETRY);
|
|
}
|
|
|
|
@Override
|
|
public ListenableFuture<FindMultiResponse<Session>> friends(UserId player) {
|
|
return client().get(UriTemplate.fromTemplate(collectionUri("friends") + "/{player}").set("player", player.player_id()).expand(),
|
|
meta.multiResponseType(),
|
|
HttpOption.INFINITE_RETRY);
|
|
}
|
|
|
|
@Override
|
|
public ListenableFuture<FindMultiResponse<Session>> staff(ServerDoc.Network network, boolean disguised) {
|
|
return client().get(new QueryUri(collectionUri())
|
|
.put("network", network)
|
|
.put("staff", true)
|
|
.put("online", true)
|
|
.put("disguised", disguised)
|
|
.encode(),
|
|
meta.multiResponseType(),
|
|
HttpOption.INFINITE_RETRY);
|
|
}
|
|
}
|