package com.ntlab.irisserver.resources;
import com.ntlab.irisserver.entities.Room;
import com.ntlab.irisserver.entities.Settings;
import com.ntlab.irisserver.models.RoomManager;
import org.springframework.stereotype.Component;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Component
@Path("rooms")
public class SettingsRest {
RoomManager rm = RoomManager.getInstance();
//------------------------------------------------------------------------------------
//GET:設定情報の入手
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{rid}/settings")
public Settings getSettings(@PathParam("rid") String rid) {
Room r = rm.getRoom(rid);
//部屋がある時、JsonでSettingsの情報を返す
if (r != null) {
return r.getSettings();
} else {
//部屋がなければエラー
var response = Response.status(Response.Status.NO_CONTENT);
response.status(404).entity("部屋が存在しません");
throw new WebApplicationException(response.build());
}
}
//----------------------------------------------------------------------------------------------------
//PUT:設定値の変更
@PUT
@Path("/{rid}/settings")
public void putSettings(@PathParam("rid") String rid,
@FormParam("drawingTimer") boolean dTimer,
@FormParam("drawingTimerTimes") int dTimerTimes,
@FormParam("gameTimer") boolean gTimer,
@FormParam("gameTimerTimes") int gTimerTimes,
@FormParam("gameTimerFirstThinkingTimes") int gTimerFTTimes) {
Room r = rm.getRoom(rid);
var response = Response.status(Response.Status.NO_CONTENT);
//部屋がある時、値を変更
if (r != null) {
Settings settings = r.getSettings();
settings.setDrawingTimer(dTimer);
settings.setDrawingTimerTimes(dTimerTimes);
settings.setGameTimer(gTimer);
settings.setGameTimerTimes(gTimerTimes);
settings.setGameTimerFirstThinkingTimes(gTimerFTTimes);
response.status(200).entity("値変更完了");
throw new WebApplicationException(response.build());
} else {
//部屋がなければエラー
response.status(404).entity("部屋が存在しません");
throw new WebApplicationException(response.build());
}
}
}