Skip to content

Commit 1be4f2b

Browse files
authored
Create new internal Go lib (#1885)
Create new Go internal API client This client only has the limited set of operations needed for the terraform plugin
2 parents 2bce1a6 + fdb797d commit 1be4f2b

20 files changed

+538
-1
lines changed

Diff for: codegen.toml

+29
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ output_dir = "java/lib/src/main/java/com/svix/models"
116116
template_dir = "openapi-templates/go"
117117
extra_shell_commands = [
118118
"rm go/health.go",
119+
"sed -i 's/package svix/package internalapi/g' go/internalapi/management*"
119120
]
120121
[[go.task]]
121122
template = "openapi-templates/go/api_resource.go.jinja"
@@ -126,6 +127,34 @@ output_dir = "go"
126127
[[go.task]]
127128
template = "openapi-templates/go/component_type.go.jinja"
128129
output_dir = "go/models"
130+
[[go.task]]
131+
template = "openapi-templates/go/api_resource.go.jinja"
132+
output_dir = "go/internalapi"
133+
extra_codegen_args = [
134+
# This is a limited list of operations required by terraform
135+
"--include-mode=only-specified",
136+
"--include-op-id=v1.management.environment.list",
137+
"--include-op-id=v1.management.environment.create",
138+
"--include-op-id=v1.management.environment.get",
139+
"--include-op-id=v1.management.environment.update",
140+
"--include-op-id=v1.management.environment.delete",
141+
"--include-op-id=v1.management.environment-settings.get",
142+
"--include-op-id=v1.management.environment-settings.update"
143+
]
144+
[[go.task]]
145+
template = "openapi-templates/go/component_type.go.jinja"
146+
output_dir = "go/models"
147+
extra_codegen_args = [
148+
# This is a limited list of operations required by terraform
149+
"--include-mode=only-specified",
150+
"--include-op-id=v1.management.environment.list",
151+
"--include-op-id=v1.management.environment.create",
152+
"--include-op-id=v1.management.environment.get",
153+
"--include-op-id=v1.management.environment.update",
154+
"--include-op-id=v1.management.environment.delete",
155+
"--include-op-id=v1.management.environment-settings.get",
156+
"--include-op-id=v1.management.environment-settings.update"
157+
]
129158

130159

131160
[kotlin]

Diff for: go/internalapi/internalapi.go

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Package internalapi, DO NOT USE THIS FILE, THE API WILL CHANGE WITHOUT WARNING!!!!
2+
package internalapi
3+
4+
import (
5+
"fmt"
6+
"net/url"
7+
8+
svix "github.com/svix/svix-webhooks/go"
9+
"github.com/svix/svix-webhooks/go/internal"
10+
)
11+
12+
type (
13+
// THIS TYPE CAN AND WILL CHANGE WITHOUT WARNING
14+
InternalSvix struct {
15+
Management *Management
16+
}
17+
)
18+
19+
func New(token string, serverUrl *url.URL, debug bool) (*InternalSvix, error) {
20+
svixHttpClient := internal.DefaultSvixHttpClient(serverUrl.String())
21+
22+
svixHttpClient.DefaultHeaders["Authorization"] = fmt.Sprintf("Bearer %s", token)
23+
svixHttpClient.DefaultHeaders["User-Agent"] = fmt.Sprintf("svix-libs/%s/go", svix.Version)
24+
25+
svx := InternalSvix{
26+
Management: newManagement(&svixHttpClient),
27+
}
28+
return &svx, nil
29+
}

Diff for: go/internalapi/management.go

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package internalapi
3+
4+
import (
5+
"github.com/svix/svix-webhooks/go/internal"
6+
)
7+
8+
type Management struct {
9+
Environment *ManagementEnvironment
10+
EnvironmentSettings *ManagementEnvironmentSettings
11+
}
12+
13+
func newManagement(client *internal.SvixHttpClient) *Management {
14+
return &Management{
15+
Environment: newManagementEnvironment(client),
16+
EnvironmentSettings: newManagementEnvironmentSettings(client),
17+
}
18+
}

Diff for: go/internalapi/management_environment.go

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package internalapi
3+
4+
import (
5+
"context"
6+
7+
"github.com/svix/svix-webhooks/go/internal"
8+
"github.com/svix/svix-webhooks/go/models"
9+
)
10+
11+
type ManagementEnvironment struct {
12+
client *internal.SvixHttpClient
13+
}
14+
15+
func newManagementEnvironment(client *internal.SvixHttpClient) *ManagementEnvironment {
16+
return &ManagementEnvironment{
17+
client: client,
18+
}
19+
}
20+
21+
type ManagementEnvironmentListOptions struct {
22+
// Limit the number of returned items
23+
Limit *uint64
24+
// The iterator returned from a prior invocation
25+
Iterator *string
26+
27+
// The sorting order of the returned items
28+
Order *models.Ordering
29+
}
30+
31+
type ManagementEnvironmentCreateOptions struct {
32+
IdempotencyKey *string
33+
}
34+
35+
// List all environments.
36+
func (managementEnvironment *ManagementEnvironment) List(
37+
ctx context.Context,
38+
o *ManagementEnvironmentListOptions,
39+
) (*models.ListResponseEnvironmentModelOut, error) {
40+
queryMap := map[string]string{}
41+
var err error
42+
if o != nil {
43+
internal.SerializeParamToMap("limit", o.Limit, queryMap, &err)
44+
internal.SerializeParamToMap("iterator", o.Iterator, queryMap, &err)
45+
internal.SerializeParamToMap("order", o.Order, queryMap, &err)
46+
if err != nil {
47+
return nil, err
48+
}
49+
}
50+
return internal.ExecuteRequest[any, models.ListResponseEnvironmentModelOut](
51+
ctx,
52+
managementEnvironment.client,
53+
"GET",
54+
"/api/v1/management/environment",
55+
nil,
56+
queryMap,
57+
nil,
58+
nil,
59+
)
60+
}
61+
62+
// Create a new environment.
63+
func (managementEnvironment *ManagementEnvironment) Create(
64+
ctx context.Context,
65+
environmentModelIn models.EnvironmentModelIn,
66+
o *ManagementEnvironmentCreateOptions,
67+
) (*models.EnvironmentModelOut, error) {
68+
headerMap := map[string]string{}
69+
var err error
70+
if o != nil {
71+
internal.SerializeParamToMap("idempotency-key", o.IdempotencyKey, headerMap, &err)
72+
if err != nil {
73+
return nil, err
74+
}
75+
}
76+
return internal.ExecuteRequest[models.EnvironmentModelIn, models.EnvironmentModelOut](
77+
ctx,
78+
managementEnvironment.client,
79+
"POST",
80+
"/api/v1/management/environment",
81+
nil,
82+
nil,
83+
headerMap,
84+
&environmentModelIn,
85+
)
86+
}
87+
88+
// Get an environment.
89+
func (managementEnvironment *ManagementEnvironment) Get(
90+
ctx context.Context,
91+
envId string,
92+
) (*models.EnvironmentModelOut, error) {
93+
pathMap := map[string]string{
94+
"env_id": envId,
95+
}
96+
return internal.ExecuteRequest[any, models.EnvironmentModelOut](
97+
ctx,
98+
managementEnvironment.client,
99+
"GET",
100+
"/api/v1/management/environment/{env_id}",
101+
pathMap,
102+
nil,
103+
nil,
104+
nil,
105+
)
106+
}
107+
108+
// Update an environment.
109+
func (managementEnvironment *ManagementEnvironment) Update(
110+
ctx context.Context,
111+
envId string,
112+
environmentModelUpdate models.EnvironmentModelUpdate,
113+
) (*models.EnvironmentModelOut, error) {
114+
pathMap := map[string]string{
115+
"env_id": envId,
116+
}
117+
return internal.ExecuteRequest[models.EnvironmentModelUpdate, models.EnvironmentModelOut](
118+
ctx,
119+
managementEnvironment.client,
120+
"PUT",
121+
"/api/v1/management/environment/{env_id}",
122+
pathMap,
123+
nil,
124+
nil,
125+
&environmentModelUpdate,
126+
)
127+
}
128+
129+
// Delete an environment.
130+
func (managementEnvironment *ManagementEnvironment) Delete(
131+
ctx context.Context,
132+
envId string,
133+
) error {
134+
pathMap := map[string]string{
135+
"env_id": envId,
136+
}
137+
_, err := internal.ExecuteRequest[any, any](
138+
ctx,
139+
managementEnvironment.client,
140+
"DELETE",
141+
"/api/v1/management/environment/{env_id}",
142+
pathMap,
143+
nil,
144+
nil,
145+
nil,
146+
)
147+
return err
148+
}

Diff for: go/internalapi/management_environment_settings.go

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package internalapi
3+
4+
import (
5+
"context"
6+
7+
"github.com/svix/svix-webhooks/go/internal"
8+
"github.com/svix/svix-webhooks/go/models"
9+
)
10+
11+
type ManagementEnvironmentSettings struct {
12+
client *internal.SvixHttpClient
13+
}
14+
15+
func newManagementEnvironmentSettings(client *internal.SvixHttpClient) *ManagementEnvironmentSettings {
16+
return &ManagementEnvironmentSettings{
17+
client: client,
18+
}
19+
}
20+
21+
// Get the environments's settings
22+
func (managementEnvironmentSettings *ManagementEnvironmentSettings) Get(
23+
ctx context.Context,
24+
) (*models.SettingsInternalOut, error) {
25+
return internal.ExecuteRequest[any, models.SettingsInternalOut](
26+
ctx,
27+
managementEnvironmentSettings.client,
28+
"GET",
29+
"/api/v1/management/environment-settings",
30+
nil,
31+
nil,
32+
nil,
33+
nil,
34+
)
35+
}
36+
37+
// Update the environment's settings
38+
func (managementEnvironmentSettings *ManagementEnvironmentSettings) Update(
39+
ctx context.Context,
40+
settingsInternalIn models.SettingsInternalIn,
41+
) (*models.SettingsInternalOut, error) {
42+
return internal.ExecuteRequest[models.SettingsInternalIn, models.SettingsInternalOut](
43+
ctx,
44+
managementEnvironmentSettings.client,
45+
"PUT",
46+
"/api/v1/management/environment-settings",
47+
nil,
48+
nil,
49+
nil,
50+
&settingsInternalIn,
51+
)
52+
}

Diff for: go/models/border_radius_config.go

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package models
3+
4+
type BorderRadiusConfig struct {
5+
Button *BorderRadiusEnum `json:"button,omitempty"`
6+
Card *BorderRadiusEnum `json:"card,omitempty"`
7+
Input *BorderRadiusEnum `json:"input,omitempty"`
8+
}

Diff for: go/models/border_radius_enum.go

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package models
3+
4+
import (
5+
"encoding/json"
6+
"fmt"
7+
"slices"
8+
)
9+
10+
type BorderRadiusEnum string
11+
12+
const (
13+
BORDERRADIUSENUM_NONE BorderRadiusEnum = "none"
14+
BORDERRADIUSENUM_LG BorderRadiusEnum = "lg"
15+
BORDERRADIUSENUM_MD BorderRadiusEnum = "md"
16+
BORDERRADIUSENUM_SM BorderRadiusEnum = "sm"
17+
BORDERRADIUSENUM_FULL BorderRadiusEnum = "full"
18+
)
19+
20+
var allowedBorderRadiusEnum = []BorderRadiusEnum{
21+
"none",
22+
"lg",
23+
"md",
24+
"sm",
25+
"full",
26+
}
27+
28+
func (v *BorderRadiusEnum) UnmarshalJSON(src []byte) error {
29+
var value string
30+
err := json.Unmarshal(src, &value)
31+
if err != nil {
32+
return err
33+
}
34+
enumVal := BorderRadiusEnum(value)
35+
if slices.Contains(allowedBorderRadiusEnum, enumVal) {
36+
*v = enumVal
37+
return nil
38+
}
39+
return fmt.Errorf("`%+v` is not a valid BorderRadiusEnum", value)
40+
41+
}

Diff for: go/models/custom_color_palette.go

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package models
3+
4+
type CustomColorPalette struct {
5+
BackgroundHover *string `json:"backgroundHover,omitempty"`
6+
BackgroundPrimary *string `json:"backgroundPrimary,omitempty"`
7+
BackgroundSecondary *string `json:"backgroundSecondary,omitempty"`
8+
ButtonPrimary *string `json:"buttonPrimary,omitempty"`
9+
InteractiveAccent *string `json:"interactiveAccent,omitempty"`
10+
NavigationAccent *string `json:"navigationAccent,omitempty"`
11+
Primary *string `json:"primary,omitempty"`
12+
TextDanger *string `json:"textDanger,omitempty"`
13+
TextPrimary *string `json:"textPrimary,omitempty"`
14+
}

Diff for: go/models/custom_strings_override.go

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package models
3+
4+
type CustomStringsOverride struct {
5+
ChannelsHelp *string `json:"channelsHelp,omitempty"`
6+
ChannelsMany *string `json:"channelsMany,omitempty"`
7+
ChannelsOne *string `json:"channelsOne,omitempty"`
8+
}

Diff for: go/models/custom_theme_override.go

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package models
3+
4+
type CustomThemeOverride struct {
5+
BorderRadius *BorderRadiusConfig `json:"borderRadius,omitempty"`
6+
FontSize *FontSizeConfig `json:"fontSize,omitempty"`
7+
}

Diff for: go/models/environment_model_in.go

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package models
3+
4+
type EnvironmentModelIn struct {
5+
Name string `json:"name"`
6+
Type EnvironmentType `json:"type"`
7+
}

Diff for: go/models/environment_model_out.go

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Package svix this file is @generated DO NOT EDIT
2+
package models
3+
4+
import "time"
5+
6+
type EnvironmentModelOut struct {
7+
CreatedAt time.Time `json:"createdAt"`
8+
Id string `json:"id"` // The Environment's ID.
9+
Name string `json:"name"`
10+
Region EnvironmentRegion `json:"region"`
11+
Type EnvironmentType `json:"type"`
12+
UpdatedAt time.Time `json:"updatedAt"`
13+
}

0 commit comments

Comments
 (0)