///|
pub(all) struct ResourceReadResult {
contents : Array[ResourceContents]
metadata : ResultMetadata
} derive(Debug, Eq)
///|
pub fn ResourceReadResult::new(
contents : Array[ResourceContents],
metadata~ : ResultMetadata = ResultMetadata::empty(),
) -> ResourceReadResult {
{ contents, metadata, }
}
///|
pub fn ResourceReadResult::text(
text : String,
uri~ : String,
mime_type? : String,
) -> ResourceReadResult {
ResourceReadResult::new([ResourceContents::text(text, uri~, mime_type?)])
}
///|
pub fn ResourceReadResult::blob(
blob : String,
uri~ : String,
mime_type? : String,
) -> ResourceReadResult {
ResourceReadResult::new([ResourceContents::blob(blob, uri~, mime_type?)])
}
///|
pub fn ResourceReadResult::from_json(
value : Json,
) -> ResourceReadResult raise MCPError {
let fields = wire_object(value)
let contents = match fields.get("contents") {
Some(Array(values)) => values.map(ResourceContents::from_json)
_ => raise InvalidParams("Missing or invalid resource contents array")
}
{
contents,
metadata: ResultMetadata::from_json(value, body_fields=["contents"]),
}
}
///|
pub impl ToJson for ResourceReadResult with fn to_json(self) {
let fields = wire_extensions(self.metadata.to_fields(), ["contents"])
fields.set(
"contents",
Json::array(self.contents.map(ResourceContents::to_json)),
)
Json::object(fields)
}
///|
pub extend ResourceReadResult with Eq::{equal, not_equal}
///|
pub extend ResourceReadResult with Debug::{to_repr}
///|
pub extend ResourceReadResult with ToJson::{to_json}