mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
Make resource.Get return nil on 404 not found
This is in line with the interface declaration and also how local lookups work. Fixes #9267
This commit is contained in:
parent
c397975af8
commit
6260455ba7
2 changed files with 18 additions and 2 deletions
|
@ -413,11 +413,15 @@ CSS integrity Data first: {{ $cssFingerprinted1.Data.Integrity }} {{ $cssFingerp
|
||||||
CSS integrity Data last: {{ $cssFingerprinted2.RelPermalink }} {{ $cssFingerprinted2.Data.Integrity }}
|
CSS integrity Data last: {{ $cssFingerprinted2.RelPermalink }} {{ $cssFingerprinted2.Data.Integrity }}
|
||||||
|
|
||||||
{{ $rimg := resources.Get "%[1]s/sunset.jpg" }}
|
{{ $rimg := resources.Get "%[1]s/sunset.jpg" }}
|
||||||
|
{{ $remotenotfound := resources.Get "%[1]s/notfound.jpg" }}
|
||||||
|
{{ $localnotfound := resources.Get "images/notfound.jpg" }}
|
||||||
{{ $rfit := $rimg.Fit "200x200" }}
|
{{ $rfit := $rimg.Fit "200x200" }}
|
||||||
{{ $rfit2 := $rfit.Fit "100x200" }}
|
{{ $rfit2 := $rfit.Fit "100x200" }}
|
||||||
{{ $rimg = $rimg | fingerprint }}
|
{{ $rimg = $rimg | fingerprint }}
|
||||||
SUNSET REMOTE: {{ $rimg.Name }}|{{ $rimg.RelPermalink }}|{{ $rimg.Width }}|{{ len $rimg.Content }}
|
SUNSET REMOTE: {{ $rimg.Name }}|{{ $rimg.RelPermalink }}|{{ $rimg.Width }}|{{ len $rimg.Content }}
|
||||||
FIT REMOTE: {{ $rfit.Name }}|{{ $rfit.RelPermalink }}|{{ $rfit.Width }}
|
FIT REMOTE: {{ $rfit.Name }}|{{ $rfit.RelPermalink }}|{{ $rfit.Width }}
|
||||||
|
REMOTE NOT FOUND: {{ if $remotenotfound }}FAILED{{ else}}OK{{ end }}
|
||||||
|
LOCAL NOT FOUND: {{ if $localnotfound }}FAILED{{ else}}OK{{ end }}
|
||||||
|
|
||||||
`, ts.URL))
|
`, ts.URL))
|
||||||
|
|
||||||
|
@ -448,6 +452,9 @@ CSS integrity Data last: /styles2.min.1cfc52986836405d37f9998a63fd6dd8608e8c410
|
||||||
|
|
||||||
SUNSET REMOTE: sunset_%[1]s.jpg|/sunset_%[1]s.a9bf1d944e19c0f382e0d8f51de690f7d0bc8fa97390c4242a86c3e5c0737e71.jpg|900|90587
|
SUNSET REMOTE: sunset_%[1]s.jpg|/sunset_%[1]s.a9bf1d944e19c0f382e0d8f51de690f7d0bc8fa97390c4242a86c3e5c0737e71.jpg|900|90587
|
||||||
FIT REMOTE: sunset_%[1]s.jpg|/sunset_%[1]s_hu59e56ffff1bc1d8d122b1403d34e039f_0_200x200_fit_q75_box.jpg|200
|
FIT REMOTE: sunset_%[1]s.jpg|/sunset_%[1]s_hu59e56ffff1bc1d8d122b1403d34e039f_0_200x200_fit_q75_box.jpg|200
|
||||||
|
REMOTE NOT FOUND: OK
|
||||||
|
LOCAL NOT FOUND: OK
|
||||||
|
|
||||||
|
|
||||||
`, helpers.HashString(ts.URL+"/sunset.jpg", map[string]interface{}{})))
|
`, helpers.HashString(ts.URL+"/sunset.jpg", map[string]interface{}{})))
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ import (
|
||||||
"github.com/gohugoio/hugo/hugofs"
|
"github.com/gohugoio/hugo/hugofs"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/cache/filecache"
|
"github.com/gohugoio/hugo/cache/filecache"
|
||||||
|
"github.com/gohugoio/hugo/common/herrors"
|
||||||
"github.com/gohugoio/hugo/common/hugio"
|
"github.com/gohugoio/hugo/common/hugio"
|
||||||
"github.com/gohugoio/hugo/common/maps"
|
"github.com/gohugoio/hugo/common/maps"
|
||||||
"github.com/gohugoio/hugo/common/types"
|
"github.com/gohugoio/hugo/common/types"
|
||||||
|
@ -154,6 +155,7 @@ func (c *Client) FromString(targetPath, content string) (resource.Resource, erro
|
||||||
// FromRemote expects one or n-parts of a URL to a resource
|
// FromRemote expects one or n-parts of a URL to a resource
|
||||||
// If you provide multiple parts they will be joined together to the final URL.
|
// If you provide multiple parts they will be joined together to the final URL.
|
||||||
func (c *Client) FromRemote(uri string, options map[string]interface{}) (resource.Resource, error) {
|
func (c *Client) FromRemote(uri string, options map[string]interface{}) (resource.Resource, error) {
|
||||||
|
defer herrors.Recover()
|
||||||
rURL, err := url.Parse(uri)
|
rURL, err := url.Parse(uri)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrapf(err, "failed to parse URL for resource %s", uri)
|
return nil, errors.Wrapf(err, "failed to parse URL for resource %s", uri)
|
||||||
|
@ -186,8 +188,10 @@ func (c *Client) FromRemote(uri string, options map[string]interface{}) (resourc
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if res.StatusCode < 200 || res.StatusCode > 299 {
|
if res.StatusCode != http.StatusNotFound {
|
||||||
return nil, errors.Errorf("failed to retrieve remote resource: %s", http.StatusText(res.StatusCode))
|
if res.StatusCode < 200 || res.StatusCode > 299 {
|
||||||
|
return nil, errors.Errorf("failed to retrieve remote resource: %s", http.StatusText(res.StatusCode))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
httpResponse, err := httputil.DumpResponse(res, true)
|
httpResponse, err := httputil.DumpResponse(res, true)
|
||||||
|
@ -207,6 +211,11 @@ func (c *Client) FromRemote(uri string, options map[string]interface{}) (resourc
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if res.StatusCode == http.StatusNotFound {
|
||||||
|
// Not found. This matches how looksup for local resources work.
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
body, err := ioutil.ReadAll(res.Body)
|
body, err := ioutil.ReadAll(res.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrapf(err, "failed to read remote resource %s", uri)
|
return nil, errors.Wrapf(err, "failed to read remote resource %s", uri)
|
||||||
|
|
Loading…
Reference in a new issue