Commit 66c8dabe authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

merge tasks classes

parent 00c212d9
......@@ -30,8 +30,7 @@ import resources.ProxyResource;
import resources.SolutionsResource;
import resources.TasksResource;
import resources.TeamsResource;
import resources.tasks.CryptoTaskResource;
import resources.tasks.WebTaskResource;
import resources.TaskResource;
import java.util.UUID;
import java.util.stream.Stream;
......@@ -97,12 +96,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
jersey.register(injector.getInstance(TasksResource.class));
jersey.register(injector.getInstance(ProxyResource.class));
jersey.register(injector.getInstance(SolutionsResource.class));
//todo: use reflections to register tasks?
//todo: move
jersey.register(new CryptoTaskResource(tasksRepository));
jersey.register(new WebTaskResource(tasksRepository));
jersey.register(injector.getInstance(TaskResource.class));
}
private void registerAuthFeatures(Environment environment) {
......@@ -177,6 +171,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
bind(TasksResource.class).toInstance(new TasksResource(tasksRepository
));
bind(SolutionsResource.class).toInstance(new SolutionsResource(solutionsRepository));
bind(TaskResource.class).toInstance(new TaskResource(tasksRepository));
}
});
}
......
package resources.tasks;
package resources;
import core.TaskType;
import io.dropwizard.auth.Auth;
import objects.User;
import objects.tasks.Task;
import objects.tasks.TaskCryptoContent;
import objects.tasks.TaskWebContent;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
......@@ -12,7 +12,9 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
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.PathParam;
import javax.ws.rs.core.Response;
......@@ -25,10 +27,14 @@ import java.util.stream.Collectors;
/**
* Created by gpietrus on 23.02.2016.
*/
public class WebTaskResource extends TaskResource {
@Path(value = "/task")
public class TaskResource {
public WebTaskResource(TasksRepository tasksRepository) {
super(tasksRepository);
protected TasksRepository tasksRepository;
@Inject
public TaskResource(TasksRepository tasksRepository) {
this.tasksRepository = tasksRepository;
}
public String readStream(InputStream input) throws IOException {
......@@ -47,21 +53,26 @@ public class WebTaskResource extends TaskResource {
return entity.getContent();
}
//todo: merge crypto and web task?
// @Override
@Path("web/{task_level}")
@Path("{task_level}")
@GET
//todo: auth
public Response getTask(@Auth User user,
final @PathParam("task_level") int taskLevel) throws IOException {
Task task = tasksRepository.get(taskLevel);//todo
if(task == null || !task.getTaskType().equals(TaskType.WEB)) {
Task task = tasksRepository.get(taskLevel);
if (task == null) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
String taskText = null;
switch (task.getTaskType()) {
case CRYPTO:
taskText = ((TaskCryptoContent) task.getTaskContent()).getText();
break;
case WEB:
taskText = readStream(proxyRequest(((TaskWebContent) task.getTaskContent()).getUrl(), user));
break;
}
TaskWebContent taskContent = (TaskWebContent) task.getTaskContent();
String response = readStream(proxyRequest(taskContent.getUrl(), user));
return Response.ok().entity(response).build();
return Response.ok().entity(taskText).build();
}
}
package resources.tasks;
import core.TaskType;
import io.dropwizard.auth.Auth;
import objects.User;
import objects.tasks.Task;
import objects.tasks.TaskCryptoContent;
import repositories.TasksRepository;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* Created by gpietrus on 23.02.2016.
*/
@Produces(MediaType.APPLICATION_JSON)
public class CryptoTaskResource extends TaskResource {
public CryptoTaskResource(TasksRepository tasksRepository) {
super(tasksRepository);
}
// private TasksRepository tasksRepository;
// @Inject
// public CryptoTaskResource(TasksRepository tasksRepository) {
// this.tasksRepository = tasksRepository;
// }
//todo: merge crypto and web task?
// @Override
@Path("crypto/{task_level}")
@GET
//todo: auth
public Response getTask(@Auth User user,
final @PathParam("task_level") int taskLevel) {
Task task = tasksRepository.get(taskLevel);//todo
if(task == null || !task.getTaskType().equals(TaskType.CRYPTO)) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
TaskCryptoContent taskContent = (TaskCryptoContent) task.getTaskContent();
return Response.ok().entity(taskContent.getText()).build();
}
}
package resources.tasks;
import repositories.TasksRepository;
import javax.inject.Inject;
import javax.ws.rs.Path;
/**
* Created by gpietrus on 23.02.2016.
*/
@Path(value = "/task")
public abstract class TaskResource {
protected TasksRepository tasksRepository;
@Inject
public TaskResource(TasksRepository tasksRepository) {
this.tasksRepository = tasksRepository;
}
//todo
// public abstract Response getTask(); //todo: auth
}
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