Commit 6d3e87c3 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

taskresource cleanup

parent 95ef0754
......@@ -95,6 +95,11 @@
<artifactId>font-awesome</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.bazaarvoice.dropwizard</groupId>
<artifactId>dropwizard-webjars-bundle</artifactId>
......
package helpers;
import org.hibernate.validator.constraints.NotEmpty;
/**
* Created by gpietrus on 22.02.2016.
*/
public class TaskUserPair {
@NotEmpty
private Integer taskLevel;
@NotEmpty
private String username;
public Integer getTaskLevel() {
return taskLevel;
}
public void setTaskLevel(Integer taskLevel) {
this.taskLevel = taskLevel;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
package resources;
import helpers.TaskUserPair;
import io.dropwizard.auth.Auth;
import objects.User;
import objects.tasks.Task;
import org.apache.commons.collections.MapUtils;
import repositories.TasksRepository;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.validation.Valid;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
@Singleton
@Path(value = "/tasks")
......@@ -36,47 +33,17 @@ public class TasksResource
return tasksRepository.getAllPublic();
}
//todo: make it admin endpoint, any username as parameter
//todo: admin authorization
@GET
@Path("/{username}") //todo: username as argument
@Path("/{username}")
public Response getUserFlags(@Auth User user, final @PathParam("username") String username)
{
if (user.isAdmin()) {
Map<List<String>, Integer> userFlagsHashes = tasksRepository.getUserFlagsHashes(username);
List<String> flags = userFlagsHashes.entrySet()
.stream()
.flatMap(listIntegerEntry -> listIntegerEntry.getKey().stream())
.collect(Collectors.toList());
return Response.ok().entity(flags).build();
return Response.ok().entity(MapUtils.invertMap(userFlagsHashes)).build();
}
return Response.status(Response.Status.UNAUTHORIZED).build();
}
//todo: merge with upper
//todo: pass username in header via proxy?
@POST
//todo: authorization
@Path("/flags/user_task_flag")
@Consumes(MediaType.APPLICATION_JSON)
public Response getUserTaskFlag(@Valid final TaskUserPair taskUserPair)
{
Optional<List<String>> userTaskFlags = tasksRepository.getUserTaskFlags(taskUserPair.getUsername(), taskUserPair.getTaskLevel());//todo
if (userTaskFlags.isPresent()) {
return Response.ok().entity(userTaskFlags.get()).build();
}
return Response.status(Response.Status.BAD_REQUEST).build();
}
// example json:
// {
// "username": "gpietrus2",
// "taskId": "abb6b014-1ee0-4f53-b8df-c7029335c070"
// }
//todo: move to solutions resource
@POST
public Response submitSolution(@Auth User user,
......
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