Skip to content

Commit 9e84851

Browse files
committed
✨ Move i18n region to resources
issue #64
1 parent c4df857 commit 9e84851

File tree

2 files changed

+38
-7
lines changed

2 files changed

+38
-7
lines changed

cmd/i18nRegion/i18nRegion.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ const (
99
short = "List YouTube i18n regions"
1010
long = "List YouTube i18n regions' id, hl, and name"
1111
hlUsage = "Host language"
12+
rURI = "i18n://region"
13+
rName = "all i18n region"
1214
)
1315

1416
var (
15-
hl string
16-
parts []string
17-
output string
18-
jpath string
17+
hl string
18+
parts []string
19+
output string
20+
jpath string
21+
defaultParts = []string{"id", "snippet"}
1922
)
2023

2124
var i18nRegionCmd = &cobra.Command{

cmd/i18nRegion/list.go

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import (
1111
)
1212

1313
func init() {
14-
cmd.MCP.AddTool(listTool, listHandler)
14+
// cmd.MCP.AddTool(listTool, listHandler)
15+
cmd.MCP.AddResource(alli18nRegion, resourceHandler)
1516
i18nRegionCmd.AddCommand(listCmd)
1617
listCmd.Flags().StringVarP(&hl, "hl", "l", "", hlUsage)
1718
listCmd.Flags().StringSliceVarP(
18-
&parts, "parts", "p", []string{"id", "snippet"}, cmd.PartsUsage,
19+
&parts, "parts", "p", defaultParts, cmd.PartsUsage,
1920
)
2021
listCmd.Flags().StringVarP(&output, "output", "o", "table", cmd.TableUsage)
2122
listCmd.Flags().StringVarP(&jpath, "jsonpath", "j", "", cmd.JPUsage)
@@ -46,7 +47,7 @@ var listTool = mcp.NewTool(
4647
mcp.Description(hlUsage), mcp.Required(),
4748
),
4849
mcp.WithArray(
49-
"parts", mcp.DefaultArray([]string{"id", "snippet"}),
50+
"parts", mcp.DefaultArray(defaultParts),
5051
mcp.Items(map[string]any{"type": "string"}),
5152
mcp.Description(cmd.PartsUsage), mcp.Required(),
5253
),
@@ -81,6 +82,33 @@ func listHandler(
8182
return mcp.NewToolResultText(writer.String()), nil
8283
}
8384

85+
var alli18nRegion = mcp.NewResource(
86+
rURI, rName,
87+
mcp.WithMIMEType("application/json"),
88+
mcp.WithResourceDescription(long),
89+
)
90+
91+
func resourceHandler(
92+
ctx context.Context, request mcp.ReadResourceRequest,
93+
) ([]mcp.ResourceContents, error) {
94+
parts = defaultParts
95+
output = "json"
96+
var writer bytes.Buffer
97+
err := list(&writer)
98+
if err != nil {
99+
return nil, err
100+
}
101+
102+
contents := []mcp.ResourceContents{
103+
mcp.TextResourceContents{
104+
URI: rURI,
105+
MIMEType: "application/json",
106+
Text: writer.String(),
107+
},
108+
}
109+
return contents, nil
110+
}
111+
84112
func list(writer io.Writer) error {
85113
i := i18nRegion.NewI18nRegion(
86114
i18nRegion.WithHl(hl), i18nRegion.WithService(nil),

0 commit comments

Comments
 (0)