105 lines
2.3 KiB
Go
105 lines
2.3 KiB
Go
package client
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
// CreateApp creates a new application
|
|
func (c *Client) CreateApp(region string, app App) (*App, error) {
|
|
req := AppRequest{
|
|
Region: region,
|
|
App: app,
|
|
}
|
|
|
|
respBody, err := c.doRequest("POST", "/api/v1/auth/ctrl/CreateApp", req)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create app: %w", err)
|
|
}
|
|
|
|
var createdApp App
|
|
if err := json.Unmarshal(respBody, &createdApp); err != nil {
|
|
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
|
|
}
|
|
|
|
return &createdApp, nil
|
|
}
|
|
|
|
// GetApp retrieves an application by key
|
|
func (c *Client) GetApp(region string, app App) (*App, error) {
|
|
req := ShowAppRequest{
|
|
Region: region,
|
|
App: &app,
|
|
}
|
|
|
|
respBody, err := c.doRequest("POST", "/api/v1/auth/ctrl/ShowApp", req)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to get app: %w", err)
|
|
}
|
|
|
|
var apps []App
|
|
if err := json.Unmarshal(respBody, &apps); err != nil {
|
|
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
|
|
}
|
|
|
|
if len(apps) == 0 {
|
|
return nil, fmt.Errorf("app not found")
|
|
}
|
|
|
|
return &apps[0], nil
|
|
}
|
|
|
|
// ListApps lists all applications
|
|
func (c *Client) ListApps(region string, filter *App) ([]App, error) {
|
|
req := ShowAppRequest{
|
|
Region: region,
|
|
App: filter,
|
|
}
|
|
|
|
respBody, err := c.doRequest("POST", "/api/v1/auth/ctrl/ShowApp", req)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to list apps: %w", err)
|
|
}
|
|
|
|
var apps []App
|
|
if err := json.Unmarshal(respBody, &apps); err != nil {
|
|
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
|
|
}
|
|
|
|
return apps, nil
|
|
}
|
|
|
|
// UpdateApp updates an existing application
|
|
func (c *Client) UpdateApp(region string, app App) (*App, error) {
|
|
req := AppRequest{
|
|
Region: region,
|
|
App: app,
|
|
}
|
|
|
|
respBody, err := c.doRequest("POST", "/api/v1/auth/ctrl/UpdateApp", req)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to update app: %w", err)
|
|
}
|
|
|
|
var updatedApp App
|
|
if err := json.Unmarshal(respBody, &updatedApp); err != nil {
|
|
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
|
|
}
|
|
|
|
return &updatedApp, nil
|
|
}
|
|
|
|
// DeleteApp deletes an application
|
|
func (c *Client) DeleteApp(region string, app App) error {
|
|
req := AppRequest{
|
|
Region: region,
|
|
App: app,
|
|
}
|
|
|
|
_, err := c.doRequest("POST", "/api/v1/auth/ctrl/DeleteApp", req)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to delete app: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|