Commit ea0e5ad4 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

enhanced injections

parent aed5bfae
...@@ -7,6 +7,7 @@ import api.TeamsResource; ...@@ -7,6 +7,7 @@ import api.TeamsResource;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import core.FlagChecker;
import core.TaskType; import core.TaskType;
import database.MongoDBConnector; import database.MongoDBConnector;
import io.dropwizard.Application; import io.dropwizard.Application;
...@@ -63,7 +64,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -63,7 +64,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
int numberOfNewTasks = 20; int numberOfNewTasks = 20;
for(int i = 0; i < 20; i++) { for (int i = 0; i < numberOfNewTasks; i++) {
Task task = new Task(String.valueOf(UUID.randomUUID()), i, Task task = new Task(String.valueOf(UUID.randomUUID()), i,
i % 2 == 0 ? TaskType.CRYPTO : TaskType.WEB, i % 2 == 0 ? TaskType.CRYPTO : TaskType.WEB,
Flag.newRandomFlag() Flag.newRandomFlag()
...@@ -74,8 +75,6 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -74,8 +75,6 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
//GENERATE TASKS END //GENERATE TASKS END
//REGISTER RESOURCES //REGISTER RESOURCES
Injector injector = createInjector(dbConnector); Injector injector = createInjector(dbConnector);
environment.jersey().register(injector.getInstance(TeamsResource.class)); environment.jersey().register(injector.getInstance(TeamsResource.class));
environment.jersey().register(injector.getInstance(TasksResource.class)); environment.jersey().register(injector.getInstance(TasksResource.class));
...@@ -88,23 +87,21 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -88,23 +87,21 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
return Guice.createInjector(new AbstractModule() { return Guice.createInjector(new AbstractModule() {
@Override @Override
protected void configure() { protected void configure() {
bind(MongoDBConnector.class).toInstance(dbConnector); bind(MongoDBConnector.class).toInstance(dbConnector);
// TeamsRepository teamsRepository = new TeamsRepository(dbConnector);
// TasksRepository tasksRepository = new TasksRepository(dbConnector);
// SolutionsRepository solutionsRepository = new SolutionsRepository(dbConnector);
TeamsRepository teamsRepository = new TeamsRepository(dbConnector); TeamsRepository teamsRepository = new TeamsRepository(dbConnector);
TasksRepository tasksRepository = new TasksRepository(dbConnector); TasksRepository tasksRepository = new TasksRepository(dbConnector);
SolutionsRepository solutionsRepository = new SolutionsRepository(dbConnector); SolutionsRepository solutionsRepository = new SolutionsRepository(dbConnector);
FlagChecker flagChecker = new FlagChecker(tasksRepository, teamsRepository, solutionsRepository);
bind(TeamsRepository.class).toInstance(teamsRepository); bind(TeamsRepository.class).toInstance(teamsRepository);
bind(TasksRepository.class).toInstance(tasksRepository); bind(TasksRepository.class).toInstance(tasksRepository);
bind(TeamsResource.class).toInstance(new TeamsResource(teamsRepository)); bind(TeamsResource.class).toInstance(new TeamsResource(teamsRepository));
bind(TasksResource.class).toInstance(new TasksResource(tasksRepository,teamsRepository,solutionsRepository)); bind(TasksResource.class).toInstance(new TasksResource(tasksRepository, teamsRepository,
solutionsRepository, flagChecker));
bind(ProxyResource.class).toInstance(new ProxyResource()); bind(ProxyResource.class).toInstance(new ProxyResource());
bind(FlagChecker.class).toInstance(flagChecker);
} }
}); });
} }
......
...@@ -24,13 +24,16 @@ public class TasksResource ...@@ -24,13 +24,16 @@ public class TasksResource
private TasksRepository tasksRepository; private TasksRepository tasksRepository;
private TeamsRepository teamsRepository; private TeamsRepository teamsRepository;
private SolutionsRepository solutionsRepository; private SolutionsRepository solutionsRepository;
private FlagChecker flagChecker;
//todo: use injections //todo: use injections
@Inject @Inject
public TasksResource(TasksRepository tasksRepository, TeamsRepository teamsRepository, SolutionsRepository solutionsRepository) { public TasksResource(TasksRepository tasksRepository, TeamsRepository teamsRepository,
SolutionsRepository solutionsRepository, FlagChecker flagChecker) {
this.tasksRepository = tasksRepository; this.tasksRepository = tasksRepository;
this.teamsRepository = teamsRepository; this.teamsRepository = teamsRepository;
this.solutionsRepository = solutionsRepository; this.solutionsRepository = solutionsRepository;
this.flagChecker = flagChecker;
} }
@GET @GET
...@@ -40,7 +43,7 @@ public class TasksResource ...@@ -40,7 +43,7 @@ public class TasksResource
@POST @POST
public boolean submitSolution(String flag) throws Exception { public boolean submitSolution(String flag) throws Exception {
return new FlagChecker(tasksRepository, teamsRepository, solutionsRepository).checkFlag(flag); return flagChecker.checkFlag(flag);
} }
} }
...@@ -7,6 +7,7 @@ import objects.Solution; ...@@ -7,6 +7,7 @@ import objects.Solution;
import objects.Task; import objects.Task;
import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.binary.Hex;
import javax.inject.Inject;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Map; import java.util.Map;
...@@ -23,6 +24,7 @@ public class FlagChecker { ...@@ -23,6 +24,7 @@ public class FlagChecker {
private TeamsRepository teamsRepository; private TeamsRepository teamsRepository;
private SolutionsRepository solutionsRepository; private SolutionsRepository solutionsRepository;
@Inject
public FlagChecker(TasksRepository tasksRepository, TeamsRepository teamsRepository, SolutionsRepository solutionsRepository) { public FlagChecker(TasksRepository tasksRepository, TeamsRepository teamsRepository, SolutionsRepository solutionsRepository) {
this.tasksRepository = tasksRepository; this.tasksRepository = tasksRepository;
this.teamsRepository = teamsRepository; this.teamsRepository = teamsRepository;
......
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