Files
2026-06-01 11:31:32 -04:00

123 lines
2.2 KiB
Go

package client
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
type Stack struct {
ID string `json:"id"`
PrimaryAssetId string `json:"primaryAssetId"`
// Assets []AssetResponseDto `json:"assets"`
}
type CreateStackRequest struct {
AssetIds []string `json:"assetIds"`
}
type UpdateStackRequest struct {
PrimaryAssetId string `json:"primaryAssetId"`
}
func (c *Client) GetStacks() ([]Stack, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/stacks", c.HostURL), nil)
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var stacks []Stack
err = json.Unmarshal(body, &stacks)
if err != nil {
return nil, err
}
return stacks, nil
}
func (c *Client) GetStack(id string) (*Stack, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/stacks/%s", c.HostURL, id), nil)
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var stack Stack
err = json.Unmarshal(body, &stack)
if err != nil {
return nil, err
}
return &stack, nil
}
func (c *Client) CreateStack(stack CreateStackRequest) (*Stack, error) {
rb, err := json.Marshal(stack)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/stacks", c.HostURL), bytes.NewBuffer(rb))
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var newStack Stack
err = json.Unmarshal(body, &newStack)
if err != nil {
return nil, err
}
return &newStack, nil
}
func (c *Client) UpdateStack(id string, stack UpdateStackRequest) (*Stack, error) {
rb, err := json.Marshal(stack)
if err != nil {
return nil, err
}
req, err := http.NewRequest("PATCH", fmt.Sprintf("%s/stacks/%s", c.HostURL, id), bytes.NewBuffer(rb))
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
var updatedStack Stack
err = json.Unmarshal(body, &updatedStack)
if err != nil {
return nil, err
}
return &updatedStack, nil
}
func (c *Client) DeleteStack(id string) error {
req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/stacks/%s", c.HostURL, id), nil)
if err != nil {
return err
}
_, err = c.doRequest(req)
return err
}