@@ -94,3 +94,123 @@ func (c *SugaApiClient) GetPublicPluginManifest(team, lib, libVersion, name stri
9494
9595 return c .parsePluginManifest (body , "public" )
9696}
97+
98+ func (c * SugaApiClient ) ListPluginLibraries (team string ) ([]PluginLibraryWithVersions , error ) {
99+ response , err := c .get (fmt .Sprintf ("/api/teams/%s/plugin_libraries" , url .PathEscape (team )), true )
100+ if err != nil {
101+ return nil , err
102+ }
103+ defer response .Body .Close ()
104+
105+ if response .StatusCode != 200 {
106+ if response .StatusCode == 404 {
107+ return nil , ErrNotFound
108+ }
109+
110+ if response .StatusCode == 401 {
111+ return nil , ErrUnauthenticated
112+ }
113+
114+ return nil , fmt .Errorf ("received non 200 response from %s plugin libraries list endpoint: %d" , version .ProductName , response .StatusCode )
115+ }
116+
117+ body , err := io .ReadAll (response .Body )
118+ if err != nil {
119+ return nil , fmt .Errorf ("failed to read response from %s plugin libraries list endpoint: %v" , version .ProductName , err )
120+ }
121+
122+ var librariesResponse ListPluginLibrariesResponse
123+ err = json .Unmarshal (body , & librariesResponse )
124+ if err != nil {
125+ return nil , fmt .Errorf ("unexpected response from %s plugin libraries list endpoint: %v" , version .ProductName , err )
126+ }
127+ return librariesResponse .Libraries , nil
128+ }
129+
130+ func (c * SugaApiClient ) ListPublicPluginLibraries () ([]PluginLibraryWithVersions , error ) {
131+ response , err := c .get ("/api/public/plugin_libraries" , true )
132+ if err != nil {
133+ return nil , err
134+ }
135+ defer response .Body .Close ()
136+
137+ if response .StatusCode != 200 {
138+ if response .StatusCode == 404 {
139+ return nil , ErrNotFound
140+ }
141+
142+ return nil , fmt .Errorf ("received non 200 response from %s public plugin libraries list endpoint: %d" , version .ProductName , response .StatusCode )
143+ }
144+
145+ body , err := io .ReadAll (response .Body )
146+ if err != nil {
147+ return nil , fmt .Errorf ("failed to read response from %s public plugin libraries list endpoint: %v" , version .ProductName , err )
148+ }
149+
150+ var librariesResponse ListPluginLibrariesResponse
151+ err = json .Unmarshal (body , & librariesResponse )
152+ if err != nil {
153+ return nil , fmt .Errorf ("unexpected response from %s public plugin libraries list endpoint: %v" , version .ProductName , err )
154+ }
155+ return librariesResponse .Libraries , nil
156+ }
157+
158+ func (c * SugaApiClient ) GetPluginLibraryVersion (team , lib , libVersion string ) (* PluginLibraryVersion , error ) {
159+ response , err := c .get (fmt .Sprintf ("/api/teams/%s/plugin_libraries/%s/versions/%s" , url .PathEscape (team ), url .PathEscape (lib ), url .PathEscape (libVersion )), true )
160+ if err != nil {
161+ return nil , err
162+ }
163+ defer response .Body .Close ()
164+
165+ if response .StatusCode != 200 {
166+ if response .StatusCode == 404 {
167+ return nil , ErrNotFound
168+ }
169+
170+ if response .StatusCode == 401 {
171+ return nil , ErrUnauthenticated
172+ }
173+
174+ return nil , fmt .Errorf ("received non 200 response from %s plugin library version endpoint: %d" , version .ProductName , response .StatusCode )
175+ }
176+
177+ body , err := io .ReadAll (response .Body )
178+ if err != nil {
179+ return nil , fmt .Errorf ("failed to read response from %s plugin library version endpoint: %v" , version .ProductName , err )
180+ }
181+
182+ var versionResponse GetPluginLibraryVersionResponse
183+ err = json .Unmarshal (body , & versionResponse )
184+ if err != nil {
185+ return nil , fmt .Errorf ("unexpected response from %s plugin library version endpoint: %v" , version .ProductName , err )
186+ }
187+ return versionResponse .Version , nil
188+ }
189+
190+ func (c * SugaApiClient ) GetPublicPluginLibraryVersion (team , lib , libVersion string ) (* PluginLibraryVersion , error ) {
191+ response , err := c .get (fmt .Sprintf ("/api/public/plugin_libraries/%s/%s/versions/%s" , url .PathEscape (team ), url .PathEscape (lib ), url .PathEscape (libVersion )), true )
192+ if err != nil {
193+ return nil , err
194+ }
195+ defer response .Body .Close ()
196+
197+ if response .StatusCode != 200 {
198+ if response .StatusCode == 404 {
199+ return nil , ErrNotFound
200+ }
201+
202+ return nil , fmt .Errorf ("received non 200 response from %s public plugin library version endpoint: %d" , version .ProductName , response .StatusCode )
203+ }
204+
205+ body , err := io .ReadAll (response .Body )
206+ if err != nil {
207+ return nil , fmt .Errorf ("failed to read response from %s public plugin library version endpoint: %v" , version .ProductName , err )
208+ }
209+
210+ var versionResponse GetPluginLibraryVersionResponse
211+ err = json .Unmarshal (body , & versionResponse )
212+ if err != nil {
213+ return nil , fmt .Errorf ("unexpected response from %s public plugin library version endpoint: %v" , version .ProductName , err )
214+ }
215+ return versionResponse .Version , nil
216+ }
0 commit comments