72 lines
2.2 KiB
Java
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) {}
|
|
}
|