diff options
| author | Rafi Ramadhana <42462215+rafiramadhana@users.noreply.github.com> | 2023-11-23 18:58:41 +0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-23 12:58:41 +0100 |
| commit | cbdbbd249239345f88bea031beb55e84c2f47688 (patch) | |
| tree | f3b001d36c0da83a1827eb8008615f5f2577a638 /modules/headers/headers.go | |
| parent | 13322edf37510b6d3bb68a853368fd1a0a67a105 (diff) | |
Add custom request header (#18)
Diffstat (limited to 'modules/headers/headers.go')
| -rw-r--r-- | modules/headers/headers.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/modules/headers/headers.go b/modules/headers/headers.go new file mode 100644 index 0000000..877b370 --- /dev/null +++ b/modules/headers/headers.go @@ -0,0 +1,42 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package headers + +import ( + "net/http" + + "github.com/philippta/flyscrape" +) + +func init() { + flyscrape.RegisterModule(Module{}) +} + +type Module struct { + Headers map[string]string `json:"headers"` +} + +func (Module) ModuleInfo() flyscrape.ModuleInfo { + return flyscrape.ModuleInfo{ + ID: "headers", + New: func() flyscrape.Module { return new(Module) }, + } +} + +func (m Module) AdaptTransport(t http.RoundTripper) http.RoundTripper { + if len(m.Headers) == 0 { + return t + } + + return flyscrape.RoundTripFunc(func(r *http.Request) (*http.Response, error) { + for k, v := range m.Headers { + r.Header.Set(k, v) + } + + return t.RoundTrip(r) + }) +} + +var _ flyscrape.TransportAdapter = Module{} |