All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.hcelebi.greenhopper.client.GreenhopperRestClient Maven / Gradle / Ivy

package io.github.hcelebi.greenhopper.client;

import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.annotation.Nulls;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import io.github.hcelebi.greenhopper.domain.dto.SprintReportDto;
import io.github.hcelebi.greenhopper.domain.dto.VelocityDto;
import io.github.hcelebi.greenhopper.exception.GreenhopperRunTimeException;


import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;

public class GreenhopperRestClient {
    private final String baseUri;
    private final String token;
    private final HttpClient client;


    public GreenhopperRestClient(String baseUri, String token) {
        this.baseUri = baseUri;
        this.token = token;
        client = HttpClient.newHttpClient();
    }

    public VelocityDto getVelocityBySquad(Integer squadId) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            HttpResponse response = client.send(HttpRequest.newBuilder()
                    .uri(URI.create(baseUri + "/rapid/charts/velocity?rapidViewId=" + squadId))
                    .header("Authorization", "Basic " + token)
                    .header("Content-Type", "application/json")
                    .GET()
                    .build(), BodyHandlers.ofString());
            return objectMapper.readValue(response.body(), VelocityDto.class);
        } catch (IOException | InterruptedException e) {
            Thread.currentThread().interrupt();
            throw new GreenhopperRunTimeException(e.getMessage());
        }
    }

    public SprintReportDto getSprintReport(Integer squadId, Integer sprintId) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.registerModule(new JodaModule());
            objectMapper.configOverride(String.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY));

            HttpResponse response = client.send(HttpRequest.newBuilder()
                    .uri(URI.create(baseUri + "/rapid/charts/sprintreport?rapidViewId=" + squadId + "&sprintId=" + sprintId))
                    .header("Authorization", "Basic " + token)
                    .header("Content-Type", "application/json")
                    .GET()
                    .build(), BodyHandlers.ofString());
            return objectMapper.readValue(response.body(), SprintReportDto.class);
        } catch (IOException | InterruptedException e) {
            Thread.currentThread().interrupt();
            throw new GreenhopperRunTimeException(e.getMessage());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy