From c5cd5a93b960d8bbf7851ad589bbecd5f39c36ba Mon Sep 17 00:00:00 2001 From: Robert Swain Date: Thu, 18 May 2017 11:57:44 +0200 Subject: [PATCH] mediaapi: Use ServerName type from gomatrixserverlib --- .../dendrite/cmd/dendrite-media-api-server/main.go | 3 ++- .../matrix-org/dendrite/mediaapi/config/config.go | 7 +++++-- .../matrix-org/dendrite/mediaapi/routing/routing.go | 3 ++- .../mediaapi/storage/media_repository_table.go | 3 ++- .../matrix-org/dendrite/mediaapi/storage/storage.go | 3 ++- .../matrix-org/dendrite/mediaapi/types/types.go | 11 ++++++----- .../matrix-org/dendrite/mediaapi/writers/download.go | 5 +++-- 7 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/github.com/matrix-org/dendrite/cmd/dendrite-media-api-server/main.go b/src/github.com/matrix-org/dendrite/cmd/dendrite-media-api-server/main.go index 1d66a4183..04c395454 100644 --- a/src/github.com/matrix-org/dendrite/cmd/dendrite-media-api-server/main.go +++ b/src/github.com/matrix-org/dendrite/cmd/dendrite-media-api-server/main.go @@ -24,6 +24,7 @@ import ( "github.com/matrix-org/dendrite/mediaapi/routing" "github.com/matrix-org/dendrite/mediaapi/storage" "github.com/matrix-org/dendrite/mediaapi/types" + "github.com/matrix-org/gomatrixserverlib" log "github.com/Sirupsen/logrus" ) @@ -56,7 +57,7 @@ func main() { } cfg := &config.MediaAPI{ - ServerName: types.ServerName(serverName), + ServerName: gomatrixserverlib.ServerName(serverName), BasePath: types.Path(basePath), MaxFileSizeBytes: types.ContentLength(maxFileSizeBytes), DataSource: dataSource, diff --git a/src/github.com/matrix-org/dendrite/mediaapi/config/config.go b/src/github.com/matrix-org/dendrite/mediaapi/config/config.go index 060964d27..86b5c75ba 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/config/config.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/config/config.go @@ -14,12 +14,15 @@ package config -import "github.com/matrix-org/dendrite/mediaapi/types" +import ( + "github.com/matrix-org/dendrite/mediaapi/types" + "github.com/matrix-org/gomatrixserverlib" +) // MediaAPI contains the config information necessary to spin up a mediaapi process. type MediaAPI struct { // The name of the server. This is usually the domain name, e.g 'matrix.org', 'localhost'. - ServerName types.ServerName `yaml:"server_name"` + ServerName gomatrixserverlib.ServerName `yaml:"server_name"` // The base path to where media files will be stored. BasePath types.Path `yaml:"base_path"` // The maximum file size in bytes that is allowed to be stored on this server. diff --git a/src/github.com/matrix-org/dendrite/mediaapi/routing/routing.go b/src/github.com/matrix-org/dendrite/mediaapi/routing/routing.go index 4c505ffdc..9b9c1d55a 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/routing/routing.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/routing/routing.go @@ -23,6 +23,7 @@ import ( "github.com/matrix-org/dendrite/mediaapi/storage" "github.com/matrix-org/dendrite/mediaapi/types" "github.com/matrix-org/dendrite/mediaapi/writers" + "github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/util" "github.com/prometheus/client_golang/prometheus" ) @@ -51,7 +52,7 @@ func Setup(servMux *http.ServeMux, httpClient *http.Client, cfg *config.MediaAPI w.Header().Set("Content-Type", "application/json") vars := mux.Vars(req) - writers.Download(w, req, types.ServerName(vars["serverName"]), types.MediaID(vars["mediaId"]), cfg, db, activeRemoteRequests) + writers.Download(w, req, gomatrixserverlib.ServerName(vars["serverName"]), types.MediaID(vars["mediaId"]), cfg, db, activeRemoteRequests) })), ) diff --git a/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go b/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go index 11b9064f1..31846cf48 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/storage/media_repository_table.go @@ -19,6 +19,7 @@ import ( "time" "github.com/matrix-org/dendrite/mediaapi/types" + "github.com/matrix-org/gomatrixserverlib" ) const mediaSchema = ` @@ -88,7 +89,7 @@ func (s *mediaStatements) insertMedia(mediaMetadata *types.MediaMetadata) error return err } -func (s *mediaStatements) selectMedia(mediaID types.MediaID, mediaOrigin types.ServerName) (*types.MediaMetadata, error) { +func (s *mediaStatements) selectMedia(mediaID types.MediaID, mediaOrigin gomatrixserverlib.ServerName) (*types.MediaMetadata, error) { mediaMetadata := types.MediaMetadata{ MediaID: mediaID, Origin: mediaOrigin, diff --git a/src/github.com/matrix-org/dendrite/mediaapi/storage/storage.go b/src/github.com/matrix-org/dendrite/mediaapi/storage/storage.go index 121a06354..17b770cea 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/storage/storage.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/storage/storage.go @@ -20,6 +20,7 @@ import ( // Import the postgres database driver. _ "github.com/lib/pq" "github.com/matrix-org/dendrite/mediaapi/types" + "github.com/matrix-org/gomatrixserverlib" ) // A Database is used to store room events and stream offsets. @@ -47,7 +48,7 @@ func (d *Database) StoreMediaMetadata(mediaMetadata *types.MediaMetadata) error } // GetMediaMetadata possibly selects the metadata about previously uploaded media from the database. -func (d *Database) GetMediaMetadata(mediaID types.MediaID, mediaOrigin types.ServerName, mediaMetadata *types.MediaMetadata) error { +func (d *Database) GetMediaMetadata(mediaID types.MediaID, mediaOrigin gomatrixserverlib.ServerName, mediaMetadata *types.MediaMetadata) error { metadata, err := d.statements.selectMedia(mediaID, mediaOrigin) mediaMetadata.ContentType = metadata.ContentType mediaMetadata.ContentDisposition = metadata.ContentDisposition diff --git a/src/github.com/matrix-org/dendrite/mediaapi/types/types.go b/src/github.com/matrix-org/dendrite/mediaapi/types/types.go index 34bf80655..2e17ddad1 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/types/types.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/types/types.go @@ -14,7 +14,11 @@ package types -import "sync" +import ( + "sync" + + "github.com/matrix-org/gomatrixserverlib" +) // ContentDisposition is an HTTP Content-Disposition header string type ContentDisposition string @@ -34,9 +38,6 @@ type Path string // MediaID is a string representing the unique identifier for a file (could be a hash but does not have to be) type MediaID string -// ServerName is the host of a matrix homeserver, e.g. matrix.org -type ServerName string - // RequestMethod is an HTTP request method i.e. GET, POST, etc type RequestMethod string @@ -49,7 +50,7 @@ type UnixMs int64 // MediaMetadata is metadata associated with a media file type MediaMetadata struct { MediaID MediaID - Origin ServerName + Origin gomatrixserverlib.ServerName ContentType ContentType ContentDisposition ContentDisposition ContentLength ContentLength diff --git a/src/github.com/matrix-org/dendrite/mediaapi/writers/download.go b/src/github.com/matrix-org/dendrite/mediaapi/writers/download.go index e72fcae07..e64350ef0 100644 --- a/src/github.com/matrix-org/dendrite/mediaapi/writers/download.go +++ b/src/github.com/matrix-org/dendrite/mediaapi/writers/download.go @@ -32,6 +32,7 @@ import ( "github.com/matrix-org/dendrite/mediaapi/config" "github.com/matrix-org/dendrite/mediaapi/storage" "github.com/matrix-org/dendrite/mediaapi/types" + "github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/util" ) @@ -90,7 +91,7 @@ var nTries = 5 // If they are present in the cache, they are served directly. // If they are not present in the cache, they are obtained from the remote server and // simultaneously served back to the client and written into the cache. -func Download(w http.ResponseWriter, req *http.Request, origin types.ServerName, mediaID types.MediaID, cfg *config.MediaAPI, db *storage.Database, activeRemoteRequests *types.ActiveRemoteRequests) { +func Download(w http.ResponseWriter, req *http.Request, origin gomatrixserverlib.ServerName, mediaID types.MediaID, cfg *config.MediaAPI, db *storage.Database, activeRemoteRequests *types.ActiveRemoteRequests) { r := &downloadRequest{ MediaMetadata: &types.MediaMetadata{ MediaID: mediaID, @@ -529,7 +530,7 @@ func (r *downloadRequest) respondFromRemoteFile(w http.ResponseWriter, basePath // Given a matrix server name, attempt to discover URLs to contact the server // on. -func getMatrixUrls(serverName types.ServerName) []string { +func getMatrixUrls(serverName gomatrixserverlib.ServerName) []string { _, srvs, err := net.LookupSRV("matrix", "tcp", string(serverName)) if err != nil { return []string{"https://" + string(serverName) + ":8448"}