terraform-provider-edge-con.../internal/client/app.go
2025-11-11 14:15:52 +01:00

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
}