Commit 49cd7aab authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

team solutions endpoint stub

parent e568a1ce
package com.telephoners.krakyournet.ctf.repositories; package com.telephoners.krakyournet.ctf.repositories;
import com.telephoners.krakyournet.ctf.objects.Solution; import com.telephoners.krakyournet.ctf.objects.Solution;
import com.telephoners.krakyournet.ctf.objects.Team;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -25,4 +26,9 @@ public class SolutionsRepository implements Repository ...@@ -25,4 +26,9 @@ public class SolutionsRepository implements Repository
datastore.save(solution); //todo: error handling? datastore.save(solution); //todo: error handling?
//todo: do not add if already exists //todo: do not add if already exists
} }
public void getByTeam(Team team)
{
}
} }
\ No newline at end of file
package com.telephoners.krakyournet.ctf.resources; package com.telephoners.krakyournet.ctf.resources;
import com.telephoners.krakyournet.ctf.objects.Solution; import com.telephoners.krakyournet.ctf.objects.Solution;
import com.telephoners.krakyournet.ctf.objects.Team;
import com.telephoners.krakyournet.ctf.objects.User; import com.telephoners.krakyournet.ctf.objects.User;
import com.telephoners.krakyournet.ctf.repositories.SolutionsRepository; import com.telephoners.krakyournet.ctf.repositories.SolutionsRepository;
import com.telephoners.krakyournet.ctf.repositories.TasksRepository; import com.telephoners.krakyournet.ctf.repositories.TasksRepository;
import com.telephoners.krakyournet.ctf.repositories.TeamsRepository;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -16,21 +18,26 @@ import javax.ws.rs.core.MediaType; ...@@ -16,21 +18,26 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Singleton @Singleton
@Path(value = "/solutions") @Path(value = "/solutions")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public class SolutionsResource { public class SolutionsResource
{
private TeamsRepository teamsRepository;
private SolutionsRepository solutionsRepository; private SolutionsRepository solutionsRepository;
private TasksRepository tasksRepository; private TasksRepository tasksRepository;
@Inject @Inject
public SolutionsResource(SolutionsRepository solutionsRepository, TasksRepository tasksRepository) { public SolutionsResource(SolutionsRepository solutionsRepository, TasksRepository tasksRepository,
TeamsRepository teamsRepository)
{
this.solutionsRepository = solutionsRepository; this.solutionsRepository = solutionsRepository;
this.tasksRepository = tasksRepository; this.tasksRepository = tasksRepository;
this.teamsRepository = teamsRepository;
} }
@POST @POST
...@@ -43,14 +50,25 @@ public class SolutionsResource { ...@@ -43,14 +50,25 @@ public class SolutionsResource {
return Response.status(Response.Status.NOT_ACCEPTABLE).build(); return Response.status(Response.Status.NOT_ACCEPTABLE).build();
} }
@GET
@Path("/my")
public void getTeamSolutions(@Auth User user)
{
Optional<Team> team = teamsRepository.getTeamByUser(user);
solutionsRepository.getByTeam(team.get())
}
@GET @GET
@Path("/all") @Path("/all")
public Map<String, List<String>> getTeamsSolutions() { public Map<String, List<String>> getTeamsSolutions()
{
return solutionsRepository.getAll() return solutionsRepository.getAll()
.stream() .stream()
.collect(Collectors.groupingBy(new Function<Solution, String>() { .collect(Collectors.groupingBy(new Function<Solution, String>()
{
@Override @Override
public String apply(Solution solution) { public String apply(Solution solution)
{
return solution.getTask().getName(); return solution.getTask().getName();
} }
})) }))
......
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