package com.ntlab.irisserver.resources;
import com.ntlab.irisserver.entities.Drawing;
import com.ntlab.irisserver.entities.Game;
import com.ntlab.irisserver.entities.Room;
import com.ntlab.irisserver.models.RoomManager;
import com.ntlab.irisserver.utils.Base64Decode;
import org.springframework.context.ApplicationContextAware;
import org.springframework.beans.BeansException;
import org.springframework.stereotype.Component;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
@Component
@Path("/rooms")
public class DrawingsRest implements ApplicationContextAware {
private org.springframework.context.ApplicationContext applicationContext;
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
// お絵描きの終了判定
@GET
@Path("/{rid}/game/drawings")
public String getDrawings(@PathParam("rid") String rid) {
// 絵のデータ取得
// 一旦必要のない方向性で行く
return null;
}
// 絵のデータ取得(パスを渡せば良い)
@GET
@Path("/{rid}/game/drawings/{dno}")
@Produces(MediaType.APPLICATION_JSON)
public Drawing getDrawing(@PathParam("rid") String rid, @PathParam("dno") int dno ) {
RoomManager rm = RoomManager.getInstance();
Room room = rm.getRoom(rid);
Game game = room.getGame();
Drawing drawing = game.getDrawing(dno);
return drawing;
}
// 描いた絵を送る
@PUT
@Path("/{rid}/game/drawings/{dno}")
@Produces(MediaType.APPLICATION_JSON)
public String putDrawing(@PathParam("rid") String rid, @PathParam("dno") int dno, @FormParam("drawing") String drawingStr ) {
String pathDirectory = "";
String drawingPath = "";
try {
pathDirectory = applicationContext.getResource("file:").getFile().getAbsolutePath() + "/apache-tomcat-9.0.10/webapps/irisdata/image";
// utilsのBase64Decodeにデコードしてもらって、そのついでに保存してもらう
drawingPath = Base64Decode.saveAsFile(rid, dno, pathDirectory, drawingStr);
System.out.println("kota0210/base64Decodeは成功。drawingPath完成→"+ drawingPath.toString());
RoomManager rm = RoomManager.getInstance();
Room room = rm.getRoom(rid);
Game game = room.getGame();
// 絵の情報を上書き
Drawing drawing = game.getDrawing(dno);
if (drawing == null) {
drawing = new Drawing();
System.out.println("kota0210/nullだったからdrawingをnewした");
}
drawing.setDrawing(drawingPath);
game.putDrawing(dno, drawing);
} catch (IOException e) {
e.printStackTrace();
throw new WebApplicationException(500);
}
return "画像保存完了";
}
}