Path: blob/dev/pkg/authprovider/authx/query_auth.go
2070 views
package authx12import (3"net/http"45"github.com/projectdiscovery/retryablehttp-go"6urlutil "github.com/projectdiscovery/utils/url"7)89var (10_ AuthStrategy = &QueryAuthStrategy{}11)1213// QueryAuthStrategy is a strategy for query auth14type QueryAuthStrategy struct {15Data *Secret16}1718// NewQueryAuthStrategy creates a new query auth strategy19func NewQueryAuthStrategy(data *Secret) *QueryAuthStrategy {20return &QueryAuthStrategy{Data: data}21}2223// Apply applies the query auth strategy to the request24func (s *QueryAuthStrategy) Apply(req *http.Request) {25q := urlutil.NewOrderedParams()26q.Decode(req.URL.RawQuery)27for _, p := range s.Data.Params {28q.Add(p.Key, p.Value)29}30req.URL.RawQuery = q.Encode()31}3233// ApplyOnRR applies the query auth strategy to the retryable request34func (s *QueryAuthStrategy) ApplyOnRR(req *retryablehttp.Request) {35q := urlutil.NewOrderedParams()36q.Decode(req.Request.URL.RawQuery)37for _, p := range s.Data.Params {38q.Add(p.Key, p.Value)39}40req.Request.URL.RawQuery = q.Encode()41}424344