media/writers/download: Make use of CreateMediaDownloadRequest from lib
This commit is contained in:
parent
0fff33928e
commit
7244fc15b3
|
@ -19,7 +19,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"mime"
|
"mime"
|
||||||
"net"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
@ -422,34 +421,11 @@ func (r *downloadRequest) fetchRemoteFile(absBasePath types.Path, maxFileSizeByt
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *downloadRequest) createRemoteRequest() (*http.Response, *util.JSONResponse) {
|
func (r *downloadRequest) createRemoteRequest() (*http.Response, *util.JSONResponse) {
|
||||||
dnsResult, err := gomatrixserverlib.LookupServer(r.MediaMetadata.Origin)
|
matrixClient := gomatrixserverlib.NewClient()
|
||||||
|
|
||||||
|
resp, err := matrixClient.CreateMediaDownloadRequest(r.MediaMetadata.Origin, string(r.MediaMetadata.MediaID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if dnsErr, ok := err.(*net.DNSError); ok && dnsErr.Timeout() {
|
r.Logger.WithError(err).Error("Failed to create download request")
|
||||||
return nil, &util.JSONResponse{
|
|
||||||
Code: 504,
|
|
||||||
JSON: jsonerror.Unknown(fmt.Sprintf("DNS look up for homeserver at %v timed out", r.MediaMetadata.Origin)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resErr := jsonerror.InternalServerError()
|
|
||||||
return nil, &resErr
|
|
||||||
}
|
|
||||||
httpsURL := "https://" + dnsResult.Addrs[0]
|
|
||||||
|
|
||||||
r.Logger.WithField("URL", httpsURL).Info("Connecting to remote")
|
|
||||||
|
|
||||||
remoteReqAddr := httpsURL + "/_matrix/media/v1/download/" + string(r.MediaMetadata.Origin) + "/" + string(r.MediaMetadata.MediaID)
|
|
||||||
remoteReq, err := http.NewRequest("GET", remoteReqAddr, nil)
|
|
||||||
if err != nil {
|
|
||||||
resErr := jsonerror.InternalServerError()
|
|
||||||
return nil, &resErr
|
|
||||||
}
|
|
||||||
|
|
||||||
remoteReq.Header.Set("Host", string(r.MediaMetadata.Origin))
|
|
||||||
|
|
||||||
client := http.Client{}
|
|
||||||
resp, err := client.Do(remoteReq)
|
|
||||||
if err != nil {
|
|
||||||
r.Logger.Warn("Failed to execute request for remote file")
|
|
||||||
return nil, &util.JSONResponse{
|
return nil, &util.JSONResponse{
|
||||||
Code: 502,
|
Code: 502,
|
||||||
JSON: jsonerror.Unknown(fmt.Sprintf("File with media ID %q could not be downloaded from %q", r.MediaMetadata.MediaID, r.MediaMetadata.Origin)),
|
JSON: jsonerror.Unknown(fmt.Sprintf("File with media ID %q could not be downloaded from %q", r.MediaMetadata.MediaID, r.MediaMetadata.Origin)),
|
||||||
|
|
Loading…
Reference in a new issue