blob: 52c0a4814c93b2f203b26d80cad0596b9aaa9f18 [file] [log] [blame]
package org.eclipse.fx.travisci.client.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import java.util.stream.Stream;
import org.eclipse.fx.travisci.client.BuildsEndpoint;
import org.eclipse.fx.travisci.client.entities.Build;
import org.eclipse.fx.travisci.client.impl.entities.BuildsResult;
import com.google.gson.GsonBuilder;
public class BuildsEndpointImpl implements BuildsEndpoint {
private final TravisCIClientImpl client;
public BuildsEndpointImpl(TravisCIClientImpl client) {
this.client = client;
}
public Stream<Build> getBuilds(BuildsQuery query) {
Map<String, Object> parameters = new HashMap<String, Object>();
if( query.afterNumber != null ) {
parameters.put("after_number", query.afterNumber);
}
if( query.ids != null ) {
parameters.put("ids",query.ids);
}
if( query.number != null ) {
parameters.put("number",query.number);
}
if( query.repositoryId != null ) {
parameters.put("repository_id",query.repositoryId);
}
if( query.slug != null ) {
parameters.put("slug",query.slug);
}
String request = client.sendGetRequest("/builds", parameters);
GsonBuilder gson = new GsonBuilder().setPrettyPrinting();
BuildsResult result = gson.create().fromJson(request, BuildsResult.class);
return ((List<Build>)result.builds()).stream();
}
@Override
public void getBuilds(BuildsQuery query, Consumer<Stream<Build>> successConsumer, Consumer<Throwable> errorConsumer) {
CompletableFuture.supplyAsync(() -> getBuilds(query)).whenComplete((s,t) -> {
if( t != null ) {
errorConsumer.accept(t);
} else {
successConsumer.accept(s);
}
});
}
@Override
public void cancel(long buildId) {
// TODO Auto-generated method stub
}
@Override
public void restart(long buildId) {
// TODO Auto-generated method stub
}
}