media/writers/download: Make use of CreateMediaDownloadRequest from lib

This commit is contained in:
Robert Swain 2017-06-01 17:57:05 +02:00
parent 0fff33928e
commit 7244fc15b3

View File

@ -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)),