55 lines
2.2 KiB
Java
55 lines
2.2 KiB
Java
package tc.oc.api.ocn;
|
|
|
|
import javax.inject.Singleton;
|
|
|
|
import com.damnhandy.uri.template.UriTemplate;
|
|
import com.google.common.collect.ImmutableMap;
|
|
import com.google.common.util.concurrent.ListenableFuture;
|
|
import tc.oc.api.docs.Entrant;
|
|
import tc.oc.api.docs.PlayerId;
|
|
import tc.oc.api.docs.Tournament;
|
|
import tc.oc.api.http.HttpOption;
|
|
import tc.oc.api.model.HttpQueryService;
|
|
import tc.oc.api.tourney.RecordMatchResponse;
|
|
import tc.oc.api.tourney.TournamentService;
|
|
|
|
@Singleton
|
|
class OCNTournamentService extends HttpQueryService<Tournament> implements TournamentService {
|
|
|
|
@Override
|
|
public ListenableFuture<RecordMatchResponse> recordMatch(Tournament tournament, String matchId) {
|
|
return client().post(memberUri(tournament._id(), "record_match"),
|
|
ImmutableMap.of("match_id", matchId),
|
|
RecordMatchResponse.class,
|
|
HttpOption.INFINITE_RETRY);
|
|
}
|
|
|
|
@Override
|
|
public ListenableFuture<Entrant> entrant(String tournamentId, String teamId) {
|
|
return client().get(UriTemplate.fromTemplate("/tournaments/{id}/entrants/{team_id}")
|
|
.set("id", tournamentId)
|
|
.set("team_id", teamId)
|
|
.expand(),
|
|
Entrant.class);
|
|
}
|
|
|
|
private ListenableFuture<Entrant> entrantSearch(String tournamentId, String param, String value) {
|
|
return client().get(UriTemplate.fromTemplate("/tournaments/{id}/entrants?{param}={value}")
|
|
.set("id", tournamentId)
|
|
.set("param", param)
|
|
.set("value", value)
|
|
.expand(),
|
|
Entrant.class);
|
|
}
|
|
|
|
@Override
|
|
public ListenableFuture<Entrant> entrantByTeamName(String tournamentId, String teamName) {
|
|
return entrantSearch(tournamentId, "team_name", teamName);
|
|
}
|
|
|
|
@Override
|
|
public ListenableFuture<Entrant> entrantByMember(String tournamentId, PlayerId playerId) {
|
|
return entrantSearch(tournamentId, "member_id", playerId._id());
|
|
}
|
|
}
|