Add optional icons field to RawResourceTemplate (#589)

* feat: add optional icons field to RawResourceTemplate

* chore: update JSON schema for ResourceTemplate icons
This commit is contained in:
Dale Seo 2025-12-18 16:56:55 -05:00 committed by GitHub
parent 0d65822c38
commit eeacd1375f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 59 additions and 0 deletions

View file

@ -48,6 +48,9 @@ pub struct RawResourceTemplate {
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mime_type: Option<String>,
/// Optional list of icons for the resource template
#[serde(skip_serializing_if = "Option::is_none")]
pub icons: Option<Vec<Icon>>,
}
pub type ResourceTemplate = Annotated<RawResourceTemplate>;
@ -146,4 +149,40 @@ mod tests {
assert!(json.contains("mimeType"));
assert!(!json.contains("mime_type"));
}
#[test]
fn test_resource_template_with_icons() {
let resource_template = RawResourceTemplate {
uri_template: "file:///{path}".to_string(),
name: "template".to_string(),
title: Some("Test Template".to_string()),
description: Some("A test resource template".to_string()),
mime_type: Some("text/plain".to_string()),
icons: Some(vec![Icon {
src: "https://example.com/icon.png".to_string(),
mime_type: Some("image/png".to_string()),
sizes: Some(vec!["48x48".to_string()]),
}]),
};
let json = serde_json::to_value(&resource_template).unwrap();
assert!(json["icons"].is_array());
assert_eq!(json["icons"][0]["src"], "https://example.com/icon.png");
assert_eq!(json["icons"][0]["sizes"][0], "48x48");
}
#[test]
fn test_resource_template_without_icons() {
let resource_template = RawResourceTemplate {
uri_template: "file:///{path}".to_string(),
name: "template".to_string(),
title: None,
description: None,
mime_type: None,
icons: None,
};
let json = serde_json::to_value(&resource_template).unwrap();
assert!(json.get("icons").is_none());
}
}

View file

@ -263,6 +263,16 @@
"null"
]
},
"icons": {
"description": "Optional list of icons for the resource template",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Icon"
}
},
"mimeType": {
"type": [
"string",

View file

@ -263,6 +263,16 @@
"null"
]
},
"icons": {
"description": "Optional list of icons for the resource template",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Icon"
}
},
"mimeType": {
"type": [
"string",