1 // Copyright 2021-2023 The sacloud/go-http authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 15 package http
16 17 import "net/http"
18 19 // RequestCustomizer リクエスト前に*http.Requestのカスタマイズを行うためのfunc
20 type RequestCustomizer func(r *http.Request) error
21 22 // ComposeRequestCustomizer 任意の個数のRequestCustomizerを合成してRequestCustomizerを返す
23 //
24 // 複数のRequestCustomizerを指定した場合は先頭から呼びだされ、エラーを返したら即時returnする
25 func ComposeRequestCustomizer(funcs ...RequestCustomizer) RequestCustomizer {
26 return func(r *http.Request) error {
27 for _, fn := range funcs {
28 if err := fn(r); err != nil {
29 return err
30 }
31 }
32 return nil
33 }
34 }
35