package games.enygma.sdk;
import java.net.URI;
import java.net.http.*;
import java.time.Duration;
public final class EnygmaClient {
  private final String baseUrl, apiKey; private final HttpClient http;
  public EnygmaClient(String baseUrl, String apiKey) { this.baseUrl=baseUrl.replaceAll("/$",""); this.apiKey=apiKey; this.http=HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build(); }
  public String request(String path, String method, String json, String idempotencyKey) throws Exception {
    var builder=HttpRequest.newBuilder(URI.create(baseUrl+path)).timeout(Duration.ofSeconds(10)).header("Content-Type","application/json").header("X-API-Key",apiKey);
    if(idempotencyKey!=null) builder.header("Idempotency-Key",idempotencyKey);
    builder.method(method, json==null?HttpRequest.BodyPublishers.noBody():HttpRequest.BodyPublishers.ofString(json));
    var response=http.send(builder.build(),HttpResponse.BodyHandlers.ofString());
    if(response.statusCode()<200||response.statusCode()>=300) throw new IllegalStateException("ENYGMA HTTP "+response.statusCode()+": "+response.body());
    return response.body();
  }
}
