diff --git a/api/custom/version.go b/api/custom/version.go new file mode 100644 index 0000000000000000000000000000000000000000..5715f78ea95f019c78da95200c12f5607a7ec3de --- /dev/null +++ b/api/custom/version.go @@ -0,0 +1,18 @@ +package custom + +import ( + "net/http" + + "github.com/turt2live/matrix-media-repo/api" + "github.com/turt2live/matrix-media-repo/common/rcontext" + "github.com/turt2live/matrix-media-repo/common/version" +) + +func GetVersion(r *http.Request, rctx rcontext.RequestContext, user api.UserInfo) interface{} { + return &api.DoNotCacheResponse{ + Payload: map[string]string{ + "Version": version.Version, + "GitCommit": version.GitCommit, + }, + } +} diff --git a/api/webserver/webserver.go b/api/webserver/webserver.go index b54cb2a8b18ff40fa5e1b1b753d53140e2a50322..a657c4e37972c82195e5b0a4e10ad3befa8849de 100644 --- a/api/webserver/webserver.go +++ b/api/webserver/webserver.go @@ -71,10 +71,14 @@ func Init() *sync.WaitGroup { startImportHandler := handler{api.RepoAdminRoute(custom.StartImport), "start_import", counter, false} appendToImportHandler := handler{api.RepoAdminRoute(custom.AppendToImport), "append_to_import", counter, false} stopImportHandler := handler{api.RepoAdminRoute(custom.StopImport), "stop_import", counter, false} + versionHandler := handler{api.AccessTokenOptionalRoute(custom.GetVersion), "get_version", counter, false} routes := make(map[string]route) versions := []string{"r0", "v1", "unstable"} // r0 is typically clients and v1 is typically servers. v1 is deprecated. + // Things that don't need a version + routes["/_matrix/media/version"] = route{"GET", versionHandler} + for _, version := range versions { // Standard routes we have to handle routes["/_matrix/media/"+version+"/upload"] = route{"POST", uploadHandler}