| 35 | |
| 36 | |
| 37 | class SkillsResource(BaseResource): |
| 38 | # -- browse / detail --------------------------------------------------- |
| 39 | |
| 40 | async def list( |
| 41 | self, |
| 42 | *, |
| 43 | category: str | None = None, |
| 44 | tag: str | None = None, |
| 45 | search: str | None = None, |
| 46 | lang: str | None = None, |
| 47 | ordering: str | None = None, |
| 48 | page: int | None = None, |
| 49 | page_size: int | None = None, |
| 50 | ) -> SkillListPage: |
| 51 | """Browse the public marketplace (page-number paginated).""" |
| 52 | req = pb.Envelope( |
| 53 | skills_list_req=s_pb.SkillsListRequest( |
| 54 | category=category, |
| 55 | tag=tag, |
| 56 | search=search, |
| 57 | lang=lang, |
| 58 | ordering=ordering, |
| 59 | page=page, |
| 60 | page_size=page_size, |
| 61 | ) |
| 62 | ) |
| 63 | return (await self._unary(req)).skill_list_page |
| 64 | |
| 65 | async def get(self, slug: str, *, lang: str | None = None) -> SkillDetail: |
| 66 | req = pb.Envelope(skills_get_req=s_pb.SkillsGetRequest(slug=slug, lang=lang)) |
| 67 | return (await self._unary(req)).skill_detail |
| 68 | |
| 69 | async def my( |
| 70 | self, |
| 71 | *, |
| 72 | search: str | None = None, |
| 73 | ordering: str | None = None, |
| 74 | page: int | None = None, |
| 75 | page_size: int | None = None, |
| 76 | ) -> SkillListPage: |
| 77 | """Your own skills (incl. private / draft).""" |
| 78 | req = pb.Envelope( |
| 79 | skills_my_req=s_pb.SkillsMyRequest( |
| 80 | search=search, ordering=ordering, page=page, page_size=page_size |
| 81 | ) |
| 82 | ) |
| 83 | return (await self._unary(req)).skill_list_page |
| 84 | |
| 85 | # -- install / star ---------------------------------------------------- |
| 86 | |
| 87 | async def install(self, slug: str) -> SkillInstall: |
| 88 | """Get the install payload (command, README, files, deps) for a skill.""" |
| 89 | req = pb.Envelope(skills_install_req=s_pb.SkillsInstallRequest(slug=slug)) |
| 90 | return (await self._unary(req)).skill_install |
| 91 | |
| 92 | async def star(self, slug: str) -> SkillStar: |
| 93 | req = pb.Envelope(skills_star_req=s_pb.SkillsStarRequest(slug=slug)) |
| 94 | return (await self._unary(req)).skill_star |
no outgoing calls