@@ -3,14 +3,17 @@ package sloghttp
3
3
import (
4
4
"net/http"
5
5
"regexp"
6
+ "slices"
6
7
"strings"
7
8
)
8
9
9
10
type Filter func (w WrapResponseWriter , r * http.Request ) bool
10
11
11
12
// Basic
12
13
func Accept (filter Filter ) Filter { return filter }
13
- func Ignore (filter Filter ) Filter { return filter }
14
+ func Ignore (filter Filter ) Filter {
15
+ return func (w WrapResponseWriter , r * http.Request ) bool { return ! filter (w , r ) }
16
+ }
14
17
15
18
// Method
16
19
func AcceptMethod (methods ... string ) Filter {
@@ -44,25 +47,13 @@ func IgnoreMethod(methods ...string) Filter {
44
47
// Status
45
48
func AcceptStatus (statuses ... int ) Filter {
46
49
return func (w WrapResponseWriter , r * http.Request ) bool {
47
- for _ , status := range statuses {
48
- if status == w .Status () {
49
- return true
50
- }
51
- }
52
-
53
- return false
50
+ return slices .Contains (statuses , w .Status ())
54
51
}
55
52
}
56
53
57
54
func IgnoreStatus (statuses ... int ) Filter {
58
55
return func (w WrapResponseWriter , r * http.Request ) bool {
59
- for _ , status := range statuses {
60
- if status == w .Status () {
61
- return false
62
- }
63
- }
64
-
65
- return true
56
+ return ! slices .Contains (statuses , w .Status ())
66
57
}
67
58
}
68
59
@@ -109,25 +100,13 @@ func IgnoreStatusLessThanOrEqual(status int) Filter {
109
100
// Path
110
101
func AcceptPath (urls ... string ) Filter {
111
102
return func (w WrapResponseWriter , r * http.Request ) bool {
112
- for _ , url := range urls {
113
- if r .URL .Path == url {
114
- return true
115
- }
116
- }
117
-
118
- return false
103
+ return slices .Contains (urls , r .URL .Path )
119
104
}
120
105
}
121
106
122
107
func IgnorePath (urls ... string ) Filter {
123
108
return func (w WrapResponseWriter , r * http.Request ) bool {
124
- for _ , url := range urls {
125
- if r .URL .Path == url {
126
- return false
127
- }
128
- }
129
-
130
- return true
109
+ return ! slices .Contains (urls , r .URL .Path )
131
110
}
132
111
}
133
112
@@ -230,25 +209,13 @@ func IgnorePathMatch(regs ...regexp.Regexp) Filter {
230
209
// Host
231
210
func AcceptHost (hosts ... string ) Filter {
232
211
return func (w WrapResponseWriter , r * http.Request ) bool {
233
- for _ , host := range hosts {
234
- if r .URL .Host == host {
235
- return true
236
- }
237
- }
238
-
239
- return false
212
+ return slices .Contains (hosts , r .URL .Host )
240
213
}
241
214
}
242
215
243
216
func IgnoreHost (hosts ... string ) Filter {
244
217
return func (w WrapResponseWriter , r * http.Request ) bool {
245
- for _ , host := range hosts {
246
- if r .URL .Host == host {
247
- return false
248
- }
249
- }
250
-
251
- return true
218
+ return ! slices .Contains (hosts , r .URL .Host )
252
219
}
253
220
}
254
221
0 commit comments