Commit cf82dbe7 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

implement simple getUserTaskFlag endpoint

parent 00c79cfe
......@@ -6,13 +6,12 @@ import objects.User;
import repositories.TasksRepository;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
/**
* Created by gpietrus on 16.02.16.
......@@ -39,6 +38,21 @@ public class TasksResource
return tasksRepository.getUserFlagsHashes(user.getName()).keySet();
}
//todo: merge with upper
//todo: user argument
//todo: pass username in header via proxy?
//todo: post
@GET
@Path("flags/{task_id}")
public Response getUserTaskFlag(final @PathParam("task_id") String taskId) {
String temporaryUserName = "gpietrus1";
Optional<String> userTaskFlag = tasksRepository.getUserTaskFlag(temporaryUserName, taskId);//todo
if(userTaskFlag.isPresent()) {
return Response.ok().entity(userTaskFlag.get()).build();
}
return Response.status(Response.Status.BAD_REQUEST).build();
}
@POST
public boolean submitSolution(@Auth User user,
String flag) throws Exception {
......
......@@ -10,7 +10,10 @@ import org.bson.Document;
import javax.inject.Inject;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
/**
......@@ -90,6 +93,14 @@ public class TasksRepository implements Repository {
public boolean checkFlag(String username, String flagValue) throws Exception {
return compareHash(flagValue, username);
}
public Optional<String> getUserTaskFlag(String username, String taskId) {
//todo: taskId, level, name? discuss
return getUserFlagsHashes(username).entrySet().stream()
.filter(taskEntry -> taskEntry.getValue().getName().equals(taskId))
.map(taskEntry -> calculateHashValue(username, taskEntry.getValue().getFlag().getValue()))
.findFirst();
}
}
//todo: generify!
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment