Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/authprovider/authx/query_auth.go
2070 views
1
package authx
2
3
import (
4
"net/http"
5
6
"github.com/projectdiscovery/retryablehttp-go"
7
urlutil "github.com/projectdiscovery/utils/url"
8
)
9
10
var (
11
_ AuthStrategy = &QueryAuthStrategy{}
12
)
13
14
// QueryAuthStrategy is a strategy for query auth
15
type QueryAuthStrategy struct {
16
Data *Secret
17
}
18
19
// NewQueryAuthStrategy creates a new query auth strategy
20
func NewQueryAuthStrategy(data *Secret) *QueryAuthStrategy {
21
return &QueryAuthStrategy{Data: data}
22
}
23
24
// Apply applies the query auth strategy to the request
25
func (s *QueryAuthStrategy) Apply(req *http.Request) {
26
q := urlutil.NewOrderedParams()
27
q.Decode(req.URL.RawQuery)
28
for _, p := range s.Data.Params {
29
q.Add(p.Key, p.Value)
30
}
31
req.URL.RawQuery = q.Encode()
32
}
33
34
// ApplyOnRR applies the query auth strategy to the retryable request
35
func (s *QueryAuthStrategy) ApplyOnRR(req *retryablehttp.Request) {
36
q := urlutil.NewOrderedParams()
37
q.Decode(req.Request.URL.RawQuery)
38
for _, p := range s.Data.Params {
39
q.Add(p.Key, p.Value)
40
}
41
req.Request.URL.RawQuery = q.Encode()
42
}
43
44