using Refit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudGaming.Core.AgileConfig.AgileConfigClient
{
///
/// AgileConfig 的 API 客户端接口,用于与 AgileConfig 服务器交互
///
public interface IAgileConfigClient
{
///
/// 获取所有应用的列表
///
/// 包含所有应用的列表
[Get("/api/App")]
Task> GetAllAppsAsync();
///
/// 根据应用 ID 获取应用详情
///
/// 应用的唯一标识符
/// 应用的详细信息
[Get("/api/App/{id}")]
Task GetAppByIdAsync(string id);
///
/// 添加一个新的应用
///
/// 应用的详细信息
/// 异步任务
[Post("/api/App")]
Task AddAppAsync([Body] ApiAppVM app);
///
/// 更新指定 ID 的应用
///
/// 应用的唯一标识符
/// 更新后的应用信息
/// 异步任务
[Put("/api/App/{id}")]
Task UpdateAppAsync(string id, [Body] ApiAppVM app);
///
/// 删除指定 ID 的应用
///
/// 应用的唯一标识符
/// 异步任务
[Delete("/api/App/{id}")]
Task DeleteAppAsync(string id);
///
/// 发布应用的配置
///
/// 应用的唯一标识符
/// 发布的环境(如:生产、测试)
/// 异步任务
[Post("/api/App/publish")]
Task PublishAppConfigAsync([Query] string appId, [Query] string env);
[Get("/api/Config/app/{appId}")]
Task> GetAppConfigsAsync(string appId, string env = null);
[Get("/api/Config")]
Task> GetAppConfigAsync(string appId, string env = null);
// Add new configuration
[Post("/api/Config")]
Task AddConfigAsync([Body] ApiConfigVM config, string env = null);
// Fetch all nodes
[Get("/api/Node")]
Task> GetAllNodesAsync();
// Add a new node
[Post("/api/Node")]
Task AddNodeAsync([Body] ApiNodeVM node);
// Delete node by address
[Delete("/api/Node")]
Task DeleteNodeAsync(string address);
}
}