Skip to content

Commit

Permalink
Added endpoints to retrieve iac config/overrides files (#101)
Browse files Browse the repository at this point in the history
  • Loading branch information
BSick7 authored Nov 12, 2024
1 parent 76b4d42 commit 2148d6b
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
3 changes: 3 additions & 0 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ func (c *Client) WorkspaceModule() WorkspaceModule {
func (c *Client) WorkspaceConfigs() WorkspaceConfigs {
return WorkspaceConfigs{Client: c}
}
func (c *Client) WorkspaceConfigFiles() WorkspaceConfigFiles {
return WorkspaceConfigFiles{Client: c}
}
func (c *Client) WorkspaceOutputs() WorkspaceOutputs {
return WorkspaceOutputs{Client: c}
}
Expand Down
51 changes: 51 additions & 0 deletions workspace_config_files.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package api

import (
"context"
"fmt"
"gopkg.in/nullstone-io/go-api-client.v0/response"
"io"
"net/http"
)

type WorkspaceConfigFiles struct {
Client *Client
}

func (w WorkspaceConfigFiles) configPath(stackId, blockId, envId int64) string {
return fmt.Sprintf("orgs/%s/stacks/%d/blocks/%d/envs/%d/config", w.Client.Config.OrgName, stackId, blockId, envId)
}

func (w WorkspaceConfigFiles) overridesPath(stackId, blockId, envId int64) string {
return fmt.Sprintf("orgs/%s/stacks/%d/blocks/%d/envs/%d/config_variables", w.Client.Config.OrgName, stackId, blockId, envId)
}

// GetConfigFile - GET /orgs/:orgName/stacks/:stackId/blocks/:blockId/envs/:envId/config
func (w WorkspaceConfigFiles) GetConfigFile(ctx context.Context, stackId, blockId, envId int64, file io.Writer) error {
res, err := w.Client.Do(ctx, http.MethodGet, w.configPath(stackId, blockId, envId), nil, nil, nil)
if err != nil {
return err
}

if err := response.ReadFile(res, file); response.IsNotFoundError(err) {
return nil
} else if err != nil {
return err
}
return nil
}

// GetOverridesFile - GET /orgs/:orgName/stacks/:stackId/blocks/:blockId/envs/:envId/config_variables
func (w WorkspaceConfigFiles) GetOverridesFile(ctx context.Context, stackId, blockId, envId int64, file io.Writer) error {
res, err := w.Client.Do(ctx, http.MethodGet, w.overridesPath(stackId, blockId, envId), nil, nil, nil)
if err != nil {
return err
}

if err := response.ReadFile(res, file); response.IsNotFoundError(err) {
return nil
} else if err != nil {
return err
}
return nil
}

0 comments on commit 2148d6b

Please sign in to comment.