Skip to main content

openai_core/resources/
skills.rs

1//! Skill namespace implementations.
2
3use http::Method;
4
5use crate::generated::endpoints;
6
7use super::{
8    BytesRequestBuilder, DeleteResponse, JsonRequestBuilder, ListRequestBuilder, Skill,
9    SkillVersion, SkillVersionsContentResource, SkillVersionsResource, SkillsContentResource,
10    SkillsResource, encode_path_segment,
11};
12
13impl SkillsResource {
14    /// 创建 skill。
15    pub fn create(&self) -> JsonRequestBuilder<Skill> {
16        let endpoint = endpoints::skills::SKILLS_CREATE;
17        JsonRequestBuilder::new(
18            self.client.clone(),
19            endpoint.id,
20            Method::POST,
21            endpoint.template,
22        )
23    }
24
25    /// 获取 skill。
26    pub fn retrieve(&self, skill_id: impl Into<String>) -> JsonRequestBuilder<Skill> {
27        let skill_id = encode_path_segment(skill_id.into());
28        let endpoint = endpoints::skills::SKILLS_RETRIEVE;
29        JsonRequestBuilder::new(
30            self.client.clone(),
31            endpoint.id,
32            Method::GET,
33            endpoint.render(&[("skill_id", &skill_id)]),
34        )
35    }
36
37    /// 更新 skill。
38    pub fn update(&self, skill_id: impl Into<String>) -> JsonRequestBuilder<Skill> {
39        let skill_id = encode_path_segment(skill_id.into());
40        let endpoint = endpoints::skills::SKILLS_UPDATE;
41        JsonRequestBuilder::new(
42            self.client.clone(),
43            endpoint.id,
44            Method::POST,
45            endpoint.render(&[("skill_id", &skill_id)]),
46        )
47    }
48
49    /// 列出 skills。
50    pub fn list(&self) -> ListRequestBuilder<Skill> {
51        let endpoint = endpoints::skills::SKILLS_LIST;
52        ListRequestBuilder::new(self.client.clone(), endpoint.id, endpoint.template)
53    }
54
55    /// 删除 skill。
56    pub fn delete(&self, skill_id: impl Into<String>) -> JsonRequestBuilder<DeleteResponse> {
57        let skill_id = encode_path_segment(skill_id.into());
58        let endpoint = endpoints::skills::SKILLS_DELETE;
59        JsonRequestBuilder::new(
60            self.client.clone(),
61            endpoint.id,
62            Method::DELETE,
63            endpoint.render(&[("skill_id", &skill_id)]),
64        )
65    }
66
67    /// 返回 content 子资源。
68    pub fn content(&self) -> SkillsContentResource {
69        SkillsContentResource::new(self.client.clone())
70    }
71
72    /// 返回 versions 子资源。
73    pub fn versions(&self) -> SkillVersionsResource {
74        SkillVersionsResource::new(self.client.clone())
75    }
76}
77
78impl SkillsContentResource {
79    /// 获取 skill 内容。
80    pub fn retrieve(&self, skill_id: impl Into<String>) -> BytesRequestBuilder {
81        let skill_id = encode_path_segment(skill_id.into());
82        let endpoint = endpoints::skills::SKILLS_CONTENT_RETRIEVE;
83        BytesRequestBuilder::new(
84            self.client.clone(),
85            endpoint.id,
86            Method::GET,
87            endpoint.render(&[("skill_id", &skill_id)]),
88        )
89    }
90}
91
92impl SkillVersionsResource {
93    /// 创建 skill version。
94    pub fn create(&self, skill_id: impl Into<String>) -> JsonRequestBuilder<SkillVersion> {
95        let skill_id = encode_path_segment(skill_id.into());
96        let endpoint = endpoints::skills::SKILLS_VERSIONS_CREATE;
97        JsonRequestBuilder::new(
98            self.client.clone(),
99            endpoint.id,
100            Method::POST,
101            endpoint.render(&[("skill_id", &skill_id)]),
102        )
103    }
104
105    /// 获取 skill version。
106    pub fn retrieve(
107        &self,
108        skill_id: impl Into<String>,
109        version_id: impl Into<String>,
110    ) -> JsonRequestBuilder<SkillVersion> {
111        let skill_id = encode_path_segment(skill_id.into());
112        let version_id = encode_path_segment(version_id.into());
113        let endpoint = endpoints::skills::SKILLS_VERSIONS_RETRIEVE;
114        JsonRequestBuilder::new(
115            self.client.clone(),
116            endpoint.id,
117            Method::GET,
118            endpoint.render(&[("skill_id", &skill_id), ("version_id", &version_id)]),
119        )
120    }
121
122    /// 列出 skill versions。
123    pub fn list(&self, skill_id: impl Into<String>) -> ListRequestBuilder<SkillVersion> {
124        let skill_id = encode_path_segment(skill_id.into());
125        let endpoint = endpoints::skills::SKILLS_VERSIONS_LIST;
126        ListRequestBuilder::new(
127            self.client.clone(),
128            endpoint.id,
129            endpoint.render(&[("skill_id", &skill_id)]),
130        )
131    }
132
133    /// 删除 skill version。
134    pub fn delete(
135        &self,
136        skill_id: impl Into<String>,
137        version_id: impl Into<String>,
138    ) -> JsonRequestBuilder<DeleteResponse> {
139        let skill_id = encode_path_segment(skill_id.into());
140        let version_id = encode_path_segment(version_id.into());
141        let endpoint = endpoints::skills::SKILLS_VERSIONS_DELETE;
142        JsonRequestBuilder::new(
143            self.client.clone(),
144            endpoint.id,
145            Method::DELETE,
146            endpoint.render(&[("skill_id", &skill_id), ("version_id", &version_id)]),
147        )
148    }
149
150    /// 返回 content 子资源。
151    pub fn content(&self) -> SkillVersionsContentResource {
152        SkillVersionsContentResource::new(self.client.clone())
153    }
154}
155
156impl SkillVersionsContentResource {
157    /// 获取 skill version 内容。
158    pub fn retrieve(
159        &self,
160        skill_id: impl Into<String>,
161        version_id: impl Into<String>,
162    ) -> BytesRequestBuilder {
163        let skill_id = encode_path_segment(skill_id.into());
164        let version_id = encode_path_segment(version_id.into());
165        let endpoint = endpoints::skills::SKILLS_VERSIONS_CONTENT_RETRIEVE;
166        BytesRequestBuilder::new(
167            self.client.clone(),
168            endpoint.id,
169            Method::GET,
170            endpoint.render(&[("skill_id", &skill_id), ("version_id", &version_id)]),
171        )
172    }
173}