package com.zioinfo.cms.integration;

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * GUARDiA Mall 연계 — 상품 ↔ 콘텐츠 양방향.
 *
 * <p>CMS가 상품 상세 콘텐츠를 관리하고, Mall은 CMS delivery API를 소비한다.
 * 본 클라이언트는 Mall 상품 카탈로그를 조회해 상품-콘텐츠 매핑 보조에 사용한다.
 */
@Component
@RequiredArgsConstructor
public class MallClient {

    @Value("${guardia.mall-url:http://localhost:8011}")
    private String mallUrl;

    private final GuardiaHttpClient http;

    /** Mall 상품 목록 조회 (자격증명 제거 후 반환). 실패 시 빈 List. */
    public List<Object> listProducts() {
        return http.callList(mallUrl, "/api/mall/products", HttpMethod.GET, null);
    }

    /** Mall 상품 단건 조회. */
    public Map<String, Object> getProduct(String mallProductId) {
        return http.callMap(mallUrl, "/api/mall/products/" + mallProductId, HttpMethod.GET, null);
    }
}
