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

io.avaje.aws.appconfig.DAppConfigFetcher Maven / Gradle / Ivy

package io.avaje.aws.appconfig;

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

final class DAppConfigFetcher implements AppConfigFetcher {

  private final URI uri;
  private final HttpClient httpClient;

  DAppConfigFetcher(String uri) {
    this.uri = URI.create(uri);
    this.httpClient = HttpClient.newBuilder()
      .build();
  }

  @Override
  public AppConfigFetcher.Result fetch() throws FetchException {
    HttpRequest request = HttpRequest.newBuilder()
      .uri(uri)
      .GET()
      .build();

    try {
      HttpResponse res = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
      String version = res.headers().firstValue("Configuration-Version").orElse(null);
      String contentType = res.headers().firstValue("Content-Type").orElse("unknown");
      String body = res.body();
      return new DResult(version, contentType, body);

    } catch (IOException | InterruptedException e) {
      throw new FetchException(e);
    }
  }

  static class Builder implements AppConfigFetcher.Builder {

    private int port = 2772;
    private String application;
    private String environment;
    private String configuration;

    @Override
    public Builder application(String application) {
      this.application = application;
      return this;
    }

    @Override
    public Builder environment(String environment) {
      this.environment = environment;
      return this;
    }

    @Override
    public Builder configuration(String configuration) {
      this.configuration = configuration;
      return this;
    }

    @Override
    public Builder port(int port) {
      this.port = port;
      return this;
    }

    @Override
    public AppConfigFetcher build() {
      return new DAppConfigFetcher(uri());
    }

    private String uri() {
      if (configuration == null) {
        configuration = environment + "-" + application;
      }
      return "http://localhost:" + port + "/applications/"
        + application + "/environments/"
        + environment + "/configurations/"
        + configuration;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy