package jp.aegif.nemaki.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.apache.commons.lang.StringUtils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import jp.aegif.nemaki.cmis.factory.auth.Token;
import jp.aegif.nemaki.cmis.factory.auth.TokenService;
@Path("/repo/{repositoryId}/authtoken/")
public class AuthTokenResource extends ResourceBase{
private TokenService tokenService;
@GET
@Path("/{userName}")
@Produces(MediaType.APPLICATION_JSON)
public String get(@PathParam("repositoryId") String repositoryId, @PathParam("userName") String userName, @QueryParam("app") String app){
boolean status = true;
JSONObject result = new JSONObject();
JSONArray errMsg = new JSONArray();
if(StringUtils.isBlank(app)){
app = "";
}
Token token = tokenService.getToken(app, repositoryId, userName);
if(token == null){
status = false;
errMsg = new JSONArray(); //TODO
}else{
JSONObject obj = new JSONObject();
obj.put("app", app);
obj.put("repositoryId", repositoryId);
obj.put("userName", userName);
obj.put("token", token.getToken());
obj.put("expiration", token.getExpiration());
result.put("value", obj);
}
result = makeResult(status, result, errMsg);
return result.toString();
}
@GET
@Path("/{userName}/register")
@Produces(MediaType.APPLICATION_JSON)
public String register(@PathParam("repositoryId") String repositoryId, @PathParam("userName") String userName, @QueryParam("app") String app){
boolean status = true;
JSONObject result = new JSONObject();
JSONArray errMsg = new JSONArray();
//Validation
if(StringUtils.isBlank(app)){
app = "";
}
if(StringUtils.isBlank(userName)){
addErrMsg(errMsg, "username", "isNull");
return makeResult(status, result, errMsg).toString();
}
if(StringUtils.isBlank(repositoryId)){
addErrMsg(errMsg, "repositoryId", "isNull");
return makeResult(status, result, errMsg).toString();
}
Token token = tokenService.setToken(app, repositoryId, userName);
JSONObject obj = new JSONObject();
obj.put("app", app);
obj.put("repositoryId", repositoryId);
obj.put("userName", userName);
obj.put("token", token.getToken());
obj.put("expiration", token.getExpiration());
result.put("value", obj);
result = makeResult(status, result, errMsg);
return result.toString();
}
public void setTokenService(TokenService tokenService) {
this.tokenService = tokenService;
}
}