gitlab-runner-gateway/src/main/java/tk/antoine_roux/wiki/service/RunnerRegistrar.java

45 lines
1.3 KiB
Java

package tk.antoine_roux.wiki.service;
import org.springframework.stereotype.Service;
import tk.antoine_roux.wiki.model.internal.Runner;
import tk.antoine_roux.wiki.model.request.AddRunner;
import tk.antoine_roux.wiki.model.request.TokenRunner;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Class use to perist registered gitlab runner
*/
@Service
public class RunnerRegistrar {
private final List<Runner> runners = new ArrayList<>();
AtomicInteger idIncrementer = new AtomicInteger();
public List<Runner> getRunners() {
return this.runners;
}
public Runner addRunner(AddRunner addRunner) {
Runner r = new Runner();
r.id = this.idIncrementer.getAndIncrement();
r.authenticationToken = UUID.randomUUID();
r.registrationToken = addRunner.token;
r.tags = addRunner.tags;
r.description = addRunner.description;
this.runners.add(r);
return r;
}
public boolean removeRunnerByRegistrationToken(TokenRunner r) {
return this.runners.removeIf(runner -> runner.authenticationToken.equals(r.token));
}
public boolean checkRunner(TokenRunner body) {
return this.runners.stream().anyMatch(runner -> runner.authenticationToken.equals(body.token));
}
}