Response.cs•2.96 kB
using Newtonsoft.Json;
namespace MCPForUnity.Editor.Helpers
{
public interface IMcpResponse
{
[JsonProperty("success")]
bool Success { get; }
}
public sealed class SuccessResponse : IMcpResponse
{
[JsonProperty("success")]
public bool Success => true;
[JsonIgnore]
public bool success => Success; // Backward-compatible casing for reflection-based tests
[JsonProperty("message")]
public string Message { get; }
[JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]
public object Data { get; }
[JsonIgnore]
public object data => Data;
public SuccessResponse(string message, object data = null)
{
Message = message;
Data = data;
}
}
public sealed class ErrorResponse : IMcpResponse
{
[JsonProperty("success")]
public bool Success => false;
[JsonIgnore]
public bool success => Success; // Backward-compatible casing for reflection-based tests
[JsonProperty("code", NullValueHandling = NullValueHandling.Ignore)]
public string Code { get; }
[JsonIgnore]
public string code => Code;
[JsonProperty("error")]
public string Error { get; }
[JsonIgnore]
public string error => Error;
[JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]
public object Data { get; }
[JsonIgnore]
public object data => Data;
public ErrorResponse(string messageOrCode, object data = null)
{
Code = messageOrCode;
Error = messageOrCode;
Data = data;
}
}
public sealed class PendingResponse : IMcpResponse
{
[JsonProperty("success")]
public bool Success => true;
[JsonIgnore]
public bool success => Success; // Backward-compatible casing for reflection-based tests
[JsonProperty("_mcp_status")]
public string Status => "pending";
[JsonIgnore]
public string _mcp_status => Status;
[JsonProperty("_mcp_poll_interval")]
public double PollIntervalSeconds { get; }
[JsonIgnore]
public double _mcp_poll_interval => PollIntervalSeconds;
[JsonProperty("message", NullValueHandling = NullValueHandling.Ignore)]
public string Message { get; }
[JsonIgnore]
public string message => Message;
[JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]
public object Data { get; }
[JsonIgnore]
public object data => Data;
public PendingResponse(string message = "", double pollIntervalSeconds = 1.0, object data = null)
{
Message = string.IsNullOrEmpty(message) ? null : message;
PollIntervalSeconds = pollIntervalSeconds;
Data = data;
}
}
}