-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
source_definition.go
134 lines (107 loc) · 3.71 KB
/
source_definition.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package airbytesdk
import (
"context"
"github.com/evris99/airbyte-sdk/types"
"github.com/google/uuid"
)
// CreateSourceDefinition creates a new source definition and returns it
func (c *Client) CreateSourceDefinition(ctx context.Context, definition *types.SourceDefinition) (*types.SourceDefinition, error) {
u, err := appendToURL(c.endpoint, "/v1/source_definitions/create")
if err != nil {
return nil, err
}
res, err := c.makeRequest(ctx, u, definition)
if err != nil {
return nil, err
}
defer res.Body.Close()
return types.SourceDefinitionFromJSON(res.Body)
}
// UpdateSourceDefinitionDockerImage updates a source definition and returns it.
// Currently, the only allowed attribute to update is the default docker image version.
func (c *Client) UpdateSourceDefinitionDockerImage(ctx context.Context, id *uuid.UUID, dockerImageTag string) (*types.SourceDefinition, error) {
u, err := appendToURL(c.endpoint, "/v1/source_definitions/update")
if err != nil {
return nil, err
}
data := make(map[string]interface{})
data["sourceDefinitionId"] = id
data["dockerImageTag"] = dockerImageTag
res, err := c.makeRequest(ctx, u, data)
if err != nil {
return nil, err
}
defer res.Body.Close()
return types.SourceDefinitionFromJSON(res.Body)
}
// ListSourceDefinitions returns all the source definitions the current Airbyte deployment is configured to use
func (c *Client) ListSourceDefinitions(ctx context.Context) ([]types.SourceDefinition, error) {
u, err := appendToURL(c.endpoint, "/v1/source_definitions/list")
if err != nil {
return nil, err
}
res, err := c.makeRequest(ctx, u, nil)
if err != nil {
return nil, err
}
defer res.Body.Close()
return types.SourceDefinitionsFromJSON(res.Body)
}
// ListLatestSourceDefinitions returns the latest source definitions the current Airbyte deployment is configured to use
func (c *Client) ListLatestSourceDefinitions(ctx context.Context) ([]types.SourceDefinition, error) {
u, err := appendToURL(c.endpoint, "/v1/source_definitions/list_latest")
if err != nil {
return nil, err
}
res, err := c.makeRequest(ctx, u, nil)
if err != nil {
return nil, err
}
defer res.Body.Close()
return types.SourceDefinitionsFromJSON(res.Body)
}
// GetSourceDefinition returns the source definition with the given ID
func (c *Client) GetSourceDefinition(ctx context.Context, id *uuid.UUID) (*types.SourceDefinition, error) {
u, err := appendToURL(c.endpoint, "/v1/source_definitions/get")
if err != nil {
return nil, err
}
data := make(map[string]*uuid.UUID)
data["sourceDefinitionId"] = id
res, err := c.makeRequest(ctx, u, data)
if err != nil {
return nil, err
}
defer res.Body.Close()
return types.SourceDefinitionFromJSON(res.Body)
}
// DeleteSourceDefinition deletes the source definition with the given ID
func (c *Client) DeleteSourceDefinition(ctx context.Context, id *uuid.UUID) error {
u, err := appendToURL(c.endpoint, "/v1/source_definitions/delete")
if err != nil {
return err
}
data := make(map[string]*uuid.UUID)
data["sourceDefinitionId"] = id
res, err := c.makeRequest(ctx, u, data)
if err != nil {
return err
}
defer res.Body.Close()
return nil
}
// GetSourceDefinitionSpecification returns the source definition specification with the given source definition ID
func (c *Client) GetSourceDefinitionSpecification(ctx context.Context, id *uuid.UUID) (*types.SourceDefinitionSpecification, error) {
u, err := appendToURL(c.endpoint, "/v1/source_definition_specifications/get")
if err != nil {
return nil, err
}
data := make(map[string]*uuid.UUID)
data["sourceDefinitionId"] = id
res, err := c.makeRequest(ctx, u, data)
if err != nil {
return nil, err
}
defer res.Body.Close()
return types.SourceDefinitionSpecificationFromJSON(res.Body)
}