72 lines
2.2 KiB
Java

package com.magamochi.ingestion.client;
import java.util.List;
import lombok.Builder;
import lombok.Getter;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(name = "flare-solverr", url = "${flare-solverr.endpoint}/v1")
public interface FlareClient {
@PostMapping(
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
GetResponse get(@RequestBody GetRequest request);
@PostMapping(
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
SessionCreateResponse createSession(@RequestBody SessionCreateRequest request);
@PostMapping(
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
SessionDestroyResponse destroySession(@RequestBody SessionDestroyRequest request);
@PostMapping(
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
SessionListResponse listSessions(@RequestBody SessionListRequest request);
@Getter
@Builder
class GetRequest {
@Builder.Default private final String cmd = "request.get";
@Builder.Default private final Integer maxTimeout = 120000;
private final String url;
private final String session;
}
@Getter
@Builder
class SessionCreateRequest {
@Builder.Default private final String cmd = "sessions.create";
}
@Getter
@Builder
class SessionDestroyRequest {
@Builder.Default private final String cmd = "sessions.destroy";
private final String session;
}
@Getter
@Builder
class SessionListRequest {
@Builder.Default private final String cmd = "sessions.list";
}
record GetResponse(String status, String message, Solution solution) {
public record Solution(String url, Integer status, String response) {}
}
record SessionCreateResponse(String status, String message, String session) {}
record SessionDestroyResponse(String status, String message) {}
record SessionListResponse(String status, String message, List<String> sessions) {}
}