Skip to content

Commit d0e209e

Browse files
authored
encode: good defaults (#6737)
* feat: good default for encode * fix tests and add a new one
1 parent 290cfea commit d0e209e

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

caddytest/integration/caddyfile_adapt/encode_options.caddyfiletest

+13
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ encode {
2121
zstd
2222
gzip 5
2323
}
24+
25+
encode
2426
----------
2527
{
2628
"apps": {
@@ -76,6 +78,17 @@ encode {
7678
"zstd",
7779
"gzip"
7880
]
81+
},
82+
{
83+
"encodings": {
84+
"gzip": {},
85+
"zstd": {}
86+
},
87+
"handler": "encode",
88+
"prefer": [
89+
"zstd",
90+
"gzip"
91+
]
7992
}
8093
]
8194
}

modules/caddyhttp/encode/caddyfile.go

+21-15
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,7 @@ func (enc *Encode) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
5757
d.Next() // consume directive name
5858

5959
prefer := []string{}
60-
for _, arg := range d.RemainingArgs() {
61-
mod, err := caddy.GetModule("http.encoders." + arg)
62-
if err != nil {
63-
return d.Errf("finding encoder module '%s': %v", mod, err)
64-
}
65-
encoding, ok := mod.New().(Encoding)
66-
if !ok {
67-
return d.Errf("module %s is not an HTTP encoding", mod)
68-
}
69-
if enc.EncodingsRaw == nil {
70-
enc.EncodingsRaw = make(caddy.ModuleMap)
71-
}
72-
enc.EncodingsRaw[arg] = caddyconfig.JSON(encoding, nil)
73-
prefer = append(prefer, arg)
74-
}
60+
remainingArgs := d.RemainingArgs()
7561

7662
responseMatchers := make(map[string]caddyhttp.ResponseMatcher)
7763
for d.NextBlock(0) {
@@ -111,6 +97,26 @@ func (enc *Encode) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
11197
}
11298
}
11399

100+
if len(prefer) == 0 && len(remainingArgs) == 0 {
101+
remainingArgs = []string{"zstd", "gzip"}
102+
}
103+
104+
for _, arg := range remainingArgs {
105+
mod, err := caddy.GetModule("http.encoders." + arg)
106+
if err != nil {
107+
return d.Errf("finding encoder module '%s': %v", mod, err)
108+
}
109+
encoding, ok := mod.New().(Encoding)
110+
if !ok {
111+
return d.Errf("module %s is not an HTTP encoding", mod)
112+
}
113+
if enc.EncodingsRaw == nil {
114+
enc.EncodingsRaw = make(caddy.ModuleMap)
115+
}
116+
enc.EncodingsRaw[arg] = caddyconfig.JSON(encoding, nil)
117+
prefer = append(prefer, arg)
118+
}
119+
114120
// use the order in which the encoders were defined.
115121
enc.Prefer = prefer
116122

0 commit comments

Comments
 (0)