Commit cf82dbe7 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

implement simple getUserTaskFlag endpoint

parent 00c79cfe
...@@ -6,13 +6,12 @@ import objects.User; ...@@ -6,13 +6,12 @@ import objects.User;
import repositories.TasksRepository; import repositories.TasksRepository;
import javax.inject.Inject; import javax.inject.Inject;
import javax.ws.rs.GET; import javax.ws.rs.*;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Optional;
/** /**
* Created by gpietrus on 16.02.16. * Created by gpietrus on 16.02.16.
...@@ -39,6 +38,21 @@ public class TasksResource ...@@ -39,6 +38,21 @@ public class TasksResource
return tasksRepository.getUserFlagsHashes(user.getName()).keySet(); 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 @POST
public boolean submitSolution(@Auth User user, public boolean submitSolution(@Auth User user,
String flag) throws Exception { String flag) throws Exception {
......
...@@ -10,7 +10,10 @@ import org.bson.Document; ...@@ -10,7 +10,10 @@ import org.bson.Document;
import javax.inject.Inject; import javax.inject.Inject;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; 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; import java.util.stream.Collectors;
/** /**
...@@ -90,6 +93,14 @@ public class TasksRepository implements Repository { ...@@ -90,6 +93,14 @@ public class TasksRepository implements Repository {
public boolean checkFlag(String username, String flagValue) throws Exception { public boolean checkFlag(String username, String flagValue) throws Exception {
return compareHash(flagValue, username); 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! //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