diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-01-16 12:44:39 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-01-16 14:44:15 +0100 |
commit | 6a579ebac3a81df61f22988e3eb55f7cb35ce523 (patch) | |
tree | 42eff3d1ab464a53cde88b619b0f6938bf71efed /resources | |
parent | f13531e608ac36cce9d679f6742a112cbab8afd1 (diff) |
Add fill HTTP Response info into .Data in resources.GetRemote
See #10604
Diffstat (limited to 'resources')
-rw-r--r-- | resources/resource.go | 2 | ||||
-rw-r--r-- | resources/resource_factories/create/integration_test.go | 7 | ||||
-rw-r--r-- | resources/resource_factories/create/remote.go | 2 | ||||
-rw-r--r-- | resources/resource_spec.go | 9 |
4 files changed, 16 insertions, 4 deletions
diff --git a/resources/resource.go b/resources/resource.go index fd60fd4f6..0d7d1d85a 100644 --- a/resources/resource.go +++ b/resources/resource.go @@ -70,6 +70,8 @@ type ResourceSourceDescriptor struct { Fs afero.Fs + Data map[string]any + // Set when its known up front, else it's resolved from the target filename. MediaType media.Type diff --git a/resources/resource_factories/create/integration_test.go b/resources/resource_factories/create/integration_test.go index e3a41d335..2d9a700d3 100644 --- a/resources/resource_factories/create/integration_test.go +++ b/resources/resource_factories/create/integration_test.go @@ -35,7 +35,7 @@ func TestGetResourceHead(t *testing.T) { {{ with .Err }} {{ errorf "Unable to get remote resource: %s" . }} {{ else }} - Head Content: {{ .Content }}. + Head Content: {{ .Content }}. Head Data: {{ .Data }} {{ end }} {{ else }} {{ errorf "Unable to get remote resource: %s" $url }} @@ -51,6 +51,9 @@ func TestGetResourceHead(t *testing.T) { b.Build() - b.AssertFileContent("public/index.html", "Head Content: .") + b.AssertFileContent("public/index.html", + "Head Content: .", + "Head Data: map[ContentLength:18210 ContentType:image/png Status:200 OK StatusCode:200 TransferEncoding:[]]", + ) } diff --git a/resources/resource_factories/create/remote.go b/resources/resource_factories/create/remote.go index 5216fff79..1ae5e095b 100644 --- a/resources/resource_factories/create/remote.go +++ b/resources/resource_factories/create/remote.go @@ -207,10 +207,12 @@ func (c *Client) FromRemote(uri string, optionsm map[string]any) (resource.Resou } resourceID = filename[:len(filename)-len(path.Ext(filename))] + "_" + resourceID + mediaType.FirstSuffix.FullSuffix + data := responseToData(res, false) return c.rs.New( resources.ResourceSourceDescriptor{ MediaType: mediaType, + Data: data, LazyPublish: true, OpenReadSeekCloser: func() (hugio.ReadSeekCloser, error) { return hugio.NewReadSeekerNoOpCloser(bytes.NewReader(body)), nil diff --git a/resources/resource_spec.go b/resources/resource_spec.go index 13920be7e..8ef693183 100644 --- a/resources/resource_spec.go +++ b/resources/resource_spec.go @@ -192,6 +192,7 @@ func (r *Spec) newGenericResource(sourceFs afero.Fs, sourceFilename, baseFilename, mediaType, + nil, ) } @@ -203,7 +204,9 @@ func (r *Spec) newGenericResourceWithBase( osFileInfo os.FileInfo, sourceFilename, baseFilename string, - mediaType media.Type) *genericResource { + mediaType media.Type, + data map[string]any, +) *genericResource { if osFileInfo != nil && osFileInfo.IsDir() { panic(fmt.Sprintf("dirs not supported resource types: %v", osFileInfo)) } @@ -244,6 +247,7 @@ func (r *Spec) newGenericResourceWithBase( name: baseFilename, title: baseFilename, resourceContent: &resourceContent{}, + data: data, } return g @@ -305,7 +309,8 @@ func (r *Spec) newResource(sourceFs afero.Fs, fd ResourceSourceDescriptor) (reso fi, sourceFilename, fd.RelTargetFilename, - mimeType) + mimeType, + fd.Data) if mimeType.MainType == "image" { imgFormat, ok := images.ImageFormatFromMediaSubType(mimeType.SubType) |