45 lines
1.3 KiB
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));
|
|
}
|
|
}
|