mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-29 22:29:56 +02:00
Fix order when reading custom headers in resources.GetRemote
Fixes #10616
This commit is contained in:
@@ -91,15 +91,10 @@ func (c *Client) FromRemote(uri string, optionsm map[string]any) (resource.Resou
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest(options.Method, uri, options.BodyReader())
|
||||
req, err := options.NewRequest(uri)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create request for resource %s: %w", uri, err)
|
||||
}
|
||||
addDefaultHeaders(req)
|
||||
|
||||
if options.Headers != nil {
|
||||
addUserProvidedHeaders(options.Headers, req)
|
||||
}
|
||||
|
||||
res, err := c.httpClient.Do(req)
|
||||
if err != nil {
|
||||
@@ -207,12 +202,7 @@ func calculateResourceID(uri string, optionsm map[string]any) string {
|
||||
return helpers.HashString(uri, optionsm)
|
||||
}
|
||||
|
||||
func addDefaultHeaders(req *http.Request, accepts ...string) {
|
||||
for _, accept := range accepts {
|
||||
if !hasHeaderValue(req.Header, "Accept", accept) {
|
||||
req.Header.Add("Accept", accept)
|
||||
}
|
||||
}
|
||||
func addDefaultHeaders(req *http.Request) {
|
||||
if !hasHeaderKey(req.Header, "User-Agent") {
|
||||
req.Header.Add("User-Agent", "Hugo Static Site Generator")
|
||||
}
|
||||
@@ -264,6 +254,23 @@ func (o fromRemoteOptions) BodyReader() io.Reader {
|
||||
return bytes.NewBuffer(o.Body)
|
||||
}
|
||||
|
||||
func (o fromRemoteOptions) NewRequest(url string) (*http.Request, error) {
|
||||
req, err := http.NewRequest(o.Method, url, o.BodyReader())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// First add any user provided headers.
|
||||
if o.Headers != nil {
|
||||
addUserProvidedHeaders(o.Headers, req)
|
||||
}
|
||||
|
||||
// Then add default headers not provided by the user.
|
||||
addDefaultHeaders(req)
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
func decodeRemoteOptions(optionsm map[string]any) (fromRemoteOptions, error) {
|
||||
options := fromRemoteOptions{
|
||||
Method: "GET",
|
||||
|
Reference in New Issue
Block a user