1package storm
2
3import liquidweb "github.com/liquidweb/liquidweb-go"
4
5// ConfigBackend is the interface for storm configs.
6type ConfigBackend interface {
7	Details(string) (*Config, error)
8	List(ConfigListParams) (*ConfigList, error)
9}
10
11// ConfigClient is the API client for storm configs.
12type ConfigClient struct {
13	Backend liquidweb.Backend
14}
15
16// Details fetches the details for a storm config.
17func (c *ConfigClient) Details(id string) (*Config, error) {
18	var config Config
19	params := ConfigParams{ID: id}
20
21	err := c.Backend.CallIntoInterface("v1/Storm/Config/details", params, config)
22	if err != nil {
23		return nil, err
24	}
25
26	return &config, nil
27}
28
29// List fetches a list of storm configs.
30func (c *ConfigClient) List(params ConfigListParams) (*ConfigList, error) {
31	var configList ConfigList
32
33	err := c.Backend.CallIntoInterface("v1/Storm/Config/list", params, configList)
34	if err != nil {
35		return nil, err
36	}
37
38	return &configList, nil
39}
40