summaryrefslogtreecommitdiff
path: root/internal/transport
diff options
context:
space:
mode:
authorLibravatar tsmethurst <tobi.smethurst@protonmail.com>2022-01-16 18:52:55 +0100
committerLibravatar tsmethurst <tobi.smethurst@protonmail.com>2022-01-16 18:52:55 +0100
commit589bb9df0275457b5f9c3790e67517ec1be1745d (patch)
tree8b15a4a457bb7ac1d4b209e5cb930cb4ec315ca8 /internal/transport
parentupdate dependencies (diff)
downloadgotosocial-589bb9df0275457b5f9c3790e67517ec1be1745d.tar.xz
pass reader around instead of []byte
Diffstat (limited to 'internal/transport')
-rw-r--r--internal/transport/derefmedia.go7
-rw-r--r--internal/transport/transport.go5
2 files changed, 6 insertions, 6 deletions
diff --git a/internal/transport/derefmedia.go b/internal/transport/derefmedia.go
index 3fa4a89e4..ed32f20c6 100644
--- a/internal/transport/derefmedia.go
+++ b/internal/transport/derefmedia.go
@@ -21,14 +21,14 @@ package transport
import (
"context"
"fmt"
- "io/ioutil"
+ "io"
"net/http"
"net/url"
"github.com/sirupsen/logrus"
)
-func (t *transport) DereferenceMedia(ctx context.Context, iri *url.URL) ([]byte, error) {
+func (t *transport) DereferenceMedia(ctx context.Context, iri *url.URL) (io.ReadCloser, error) {
l := logrus.WithField("func", "DereferenceMedia")
l.Debugf("performing GET to %s", iri.String())
req, err := http.NewRequestWithContext(ctx, "GET", iri.String(), nil)
@@ -50,9 +50,8 @@ func (t *transport) DereferenceMedia(ctx context.Context, iri *url.URL) ([]byte,
if err != nil {
return nil, err
}
- defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("GET request to %s failed (%d): %s", iri.String(), resp.StatusCode, resp.Status)
}
- return ioutil.ReadAll(resp.Body)
+ return resp.Body, nil
}
diff --git a/internal/transport/transport.go b/internal/transport/transport.go
index c43515a42..d9650d952 100644
--- a/internal/transport/transport.go
+++ b/internal/transport/transport.go
@@ -21,6 +21,7 @@ package transport
import (
"context"
"crypto"
+ "io"
"net/url"
"sync"
@@ -33,8 +34,8 @@ import (
// functionality for fetching remote media.
type Transport interface {
pub.Transport
- // DereferenceMedia fetches the bytes of the given media attachment IRI.
- DereferenceMedia(ctx context.Context, iri *url.URL) ([]byte, error)
+ // DereferenceMedia fetches the given media attachment IRI.
+ DereferenceMedia(ctx context.Context, iri *url.URL) (io.ReadCloser, error)
// DereferenceInstance dereferences remote instance information, first by checking /api/v1/instance, and then by checking /.well-known/nodeinfo.
DereferenceInstance(ctx context.Context, iri *url.URL) (*gtsmodel.Instance, error)
// Finger performs a webfinger request with the given username and domain, and returns the bytes from the response body.