Skip to content

Commit b2a1c41

Browse files
committed
fix(cdn) apply review comments
- replace single char names with more descriptive ones - remove predefined mod functions - deduplicate ParseOriginRequestHeaders and test it - deduplicate ParseGeofencing and test it - add test FlagTo* funcs
1 parent d6160f1 commit b2a1c41

File tree

11 files changed

+470
-288
lines changed

11 files changed

+470
-288
lines changed

internal/cmd/beta/cdn/distribution/create/create.go

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package create
33
import (
44
"context"
55
"fmt"
6-
"strings"
76

87
"github.com/spf13/cobra"
98
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
@@ -15,6 +14,7 @@ import (
1514
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1615
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
1716
"github.com/stackitcloud/stackit-cli/internal/pkg/services/cdn/client"
17+
cdnUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/cdn/utils"
1818
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1919
sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils"
2020
"github.com/stackitcloud/stackit-sdk-go/services/cdn"
@@ -203,13 +203,13 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
203203
var geofencing *map[string][]string
204204
geofencingInput := flags.FlagToStringArrayValue(p, cmd, flagHTTPGeofencing)
205205
if geofencingInput != nil {
206-
geofencing = parseGeofencing(p, geofencingInput)
206+
geofencing = cdnUtils.ParseGeofencing(p, geofencingInput)
207207
}
208208

209209
var originRequestHeaders *map[string]string
210210
originRequestHeadersInput := flags.FlagToStringSliceValue(p, cmd, flagHTTPOriginRequestHeaders)
211211
if originRequestHeadersInput != nil {
212-
originRequestHeaders = parseOriginRequestHeaders(p, originRequestHeadersInput)
212+
originRequestHeaders = cdnUtils.ParseOriginRequestHeaders(p, originRequestHeadersInput)
213213
}
214214

215215
http = &httpInputModel{
@@ -265,39 +265,6 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
265265
return &model, nil
266266
}
267267

268-
func parseGeofencing(p *print.Printer, geofencingInput []string) *map[string][]string { //nolint:gocritic // ptrToRefParam is nice here because of awkward SDK API
269-
geofencing := make(map[string][]string)
270-
for _, in := range geofencingInput {
271-
firstSpace := strings.IndexRune(in, ' ')
272-
if firstSpace == -1 {
273-
p.Debug(print.ErrorLevel, "invalid geofencing entry (no space found): %q", in)
274-
continue
275-
}
276-
urlPart := in[:firstSpace]
277-
countriesPart := in[firstSpace+1:]
278-
geofencing[urlPart] = nil
279-
countries := strings.Split(countriesPart, ",")
280-
for _, country := range countries {
281-
country = strings.TrimSpace(country)
282-
geofencing[urlPart] = append(geofencing[urlPart], country)
283-
}
284-
}
285-
return &geofencing
286-
}
287-
288-
func parseOriginRequestHeaders(p *print.Printer, originRequestHeadersInput []string) *map[string]string { //nolint:gocritic // ptrToRefParam is nice here because of awkward SDK API
289-
originRequestHeaders := make(map[string]string)
290-
for _, in := range originRequestHeadersInput {
291-
parts := strings.Split(in, ":")
292-
if len(parts) != 2 {
293-
p.Debug(print.ErrorLevel, "invalid origin request header entry (no colon found): %q", in)
294-
continue
295-
}
296-
originRequestHeaders[strings.TrimSpace(parts[0])] = strings.TrimSpace(parts[1])
297-
}
298-
return &originRequestHeaders
299-
}
300-
301268
func buildRequest(ctx context.Context, model *inputModel, apiClient *cdn.APIClient) cdn.ApiCreateDistributionRequest {
302269
req := apiClient.CreateDistribution(ctx, model.ProjectId)
303270
var backend cdn.CreateDistributionPayloadGetBackendArgType

internal/cmd/beta/cdn/distribution/describe/describe_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var (
2828
testTime = time.Time{}
2929
)
3030

31-
func fixtureFlagValues(mods ...func(m map[string]string)) map[string]string {
31+
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
3232
flagValues := map[string]string{
3333
globalflags.ProjectIdFlag: testProjectID,
3434
}
@@ -38,7 +38,7 @@ func fixtureFlagValues(mods ...func(m map[string]string)) map[string]string {
3838
return flagValues
3939
}
4040

41-
func fixtureInputModel(mods ...func(m *inputModel)) *inputModel {
41+
func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
4242
model := &inputModel{
4343
GlobalFlagModel: &globalflags.GlobalFlagModel{
4444
ProjectId: testProjectID,
@@ -53,7 +53,7 @@ func fixtureInputModel(mods ...func(m *inputModel)) *inputModel {
5353
return model
5454
}
5555

56-
func fixtureResponse(mods ...func(r *cdn.GetDistributionResponse)) *cdn.GetDistributionResponse {
56+
func fixtureResponse(mods ...func(resp *cdn.GetDistributionResponse)) *cdn.GetDistributionResponse {
5757
response := &cdn.GetDistributionResponse{
5858
Distribution: &cdn.Distribution{
5959
Config: &cdn.Config{
@@ -133,12 +133,12 @@ func TestParseInput(t *testing.T) {
133133
{
134134
description: "with WAF",
135135
args: []string{testDistributionID},
136-
flags: fixtureFlagValues(func(m map[string]string) {
137-
m[flagWithWaf] = "true"
136+
flags: fixtureFlagValues(func(flagValues map[string]string) {
137+
flagValues[flagWithWaf] = "true"
138138
}),
139139
isValid: true,
140-
expected: fixtureInputModel(func(m *inputModel) {
141-
m.WithWAF = true
140+
expected: fixtureInputModel(func(model *inputModel) {
141+
model.WithWAF = true
142142
}),
143143
},
144144
}
@@ -162,8 +162,8 @@ func TestBuildRequest(t *testing.T) {
162162
},
163163
{
164164
description: "with WAF",
165-
model: fixtureInputModel(func(m *inputModel) {
166-
m.WithWAF = true
165+
model: fixtureInputModel(func(model *inputModel) {
166+
model.WithWAF = true
167167
}),
168168
expected: testClient.GetDistribution(testCtx, testProjectID, testDistributionID).WithWafStatus(true),
169169
},

internal/cmd/beta/cdn/distribution/list/list.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,11 @@ func outputResult(p *print.Printer, outputFormat string, distributions []cdn.Dis
128128

129129
table := tables.NewTable()
130130
table.SetHeader("ID", "REGIONS", "STATUS")
131-
for i := range distributions {
132-
d := &distributions[i]
133-
joinedRegions := strings.Join(sdkUtils.EnumSliceToStringSlice(*d.Config.Regions), ", ")
131+
for _, d := range distributions {
132+
var joinedRegions string
133+
if d.Config != nil && d.Config.Regions != nil {
134+
joinedRegions = strings.Join(sdkUtils.EnumSliceToStringSlice(*d.Config.Regions), ", ")
135+
}
134136
table.AddRow(
135137
utils.PtrString(d.Id),
136138
joinedRegions,

0 commit comments

Comments
 (0)