feat: add Glow HTTP tool integration sample
Some checks failed
Deploy to OCIWP / deploy (push) Failing after 14s

This commit is contained in:
jade
2026-08-10 17:24:28 +09:00
parent 4b08021fc6
commit 40303ee9b8
15 changed files with 427 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
package io.shinhanlife.dap.mcc.biz.smp.dto;
import io.swagger.v3.oas.annotations.media.Schema;
/** Tool response for the HTTP integration sample. */
public record SampleHttpStatusResponse(
@Schema(description = "External API processing status", example = "OK") String status,
@Schema(description = "External API response message", example = "Sample API is available") String message) {
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.dap.mcc.biz.smp.usecase;
import io.shinhanlife.dap.lib.annotation.ToolHint;
import io.shinhanlife.dap.mcc.biz.smp.dto.SampleHttpStatusResponse;
import org.springaicommunity.mcp.annotation.McpTool;
/** Sample Tool that demonstrates a configured HTTP API integration. */
public interface SampleHttpStatusUseCase {
@McpTool(name = "oth.smp.sample.http.status",
title = "Sample external HTTP API status",
description = "Calls the configured sample HTTP API and returns its status.")
@ToolHint(register = false, categoryKey = "smp", mappingId = "HTTP_SAMPLE_001")
SampleHttpStatusResponse execute();
}

View File

@@ -0,0 +1,21 @@
package io.shinhanlife.dap.mcc.biz.smp.usecase.impl;
import io.shinhanlife.dap.mcc.biz.smp.dto.SampleHttpStatusResponse;
import io.shinhanlife.dap.mcc.biz.smp.usecase.SampleHttpStatusUseCase;
import io.shinhanlife.dap.mcc.infra.itrf.http.sample.SampleHttpApiClient;
import io.shinhanlife.dap.mcc.infra.itrf.http.sample.SampleHttpApiResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class SampleHttpStatusUseCaseImpl implements SampleHttpStatusUseCase {
private final SampleHttpApiClient sampleHttpApiClient;
@Override
public SampleHttpStatusResponse execute() {
SampleHttpApiResponse response = sampleHttpApiClient.getStatus();
return new SampleHttpStatusResponse(response.status(), response.message());
}
}

View File

@@ -0,0 +1,18 @@
package io.shinhanlife.dap.mcc.infra.itrf.http.sample;
import io.shinhanlife.dap.lib.integration.http.component.AxhubHttpComponent;
import io.shinhanlife.dap.lib.integration.http.component.AxhubHttpDomain;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
/** Example of a Tool-specific HTTP client using the configured AX HUB HTTP domain. */
@Component
@RequiredArgsConstructor
public class SampleHttpApiClient {
private final AxhubHttpComponent http;
public SampleHttpApiResponse getStatus() {
return http.call(AxhubHttpDomain.SAMPLE, "/status", null, SampleHttpApiResponse.class);
}
}

View File

@@ -0,0 +1,5 @@
package io.shinhanlife.dap.mcc.infra.itrf.http.sample;
/** DTO matching the external API JSON response: { "status": "OK", "message": "..." }. */
public record SampleHttpApiResponse(String status, String message) {
}

View File

@@ -43,6 +43,14 @@ axhub:
url: http://localhost:8081
tool:
url: ${AXHUB_TOOL_URL:http://localhost:${server.port}}
# Registered outbound HTTP APIs. Tool code selects the domain name, never a free-form URL.
http:
api-list:
- name: sample
domain: ${AXHUB_SAMPLE_HTTP_DOMAIN:http://localhost:8099}
path: ""
method: GET
biz-pod: false
sol:
req-detail: