Implement content repository configuration endpoint

Signed-off-by: Rudraksh Pareek <54525605+DelusionalOptimist@users.noreply.github.com>
This commit is contained in:
Rudraksh Pareek 2021-01-09 02:15:33 +05:30
parent 3069079e37
commit 59e1b96114
No known key found for this signature in database
GPG key ID: D3A77129495A243E
3 changed files with 44 additions and 0 deletions

View file

@ -0,0 +1,37 @@
// Copyright 2017 Vector Creations Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package routing
import (
"net/http"
"github.com/matrix-org/dendrite/setup/config"
"github.com/matrix-org/util"
)
// mediaConfigResponse represents a response for a `config` request
type mediaConfigResponse struct {
MaxFileSizeBytes *config.FileSizeBytes `json:"m.upload.size"`
}
// Config implements `/config` which allows clients to retrieve the
// configuration of the content repository, such as upload limitations.
// https://matrix.org/docs/spec/client_server/latest#get-matrix-media-r0-config
func Config(req *http.Request, cfg *config.MediaAPI) util.JSONResponse {
return util.JSONResponse{
Code: http.StatusOK,
JSON: mediaConfigResponse{MaxFileSizeBytes: cfg.MaxFileSizeBytes},
}
}

View file

@ -74,6 +74,12 @@ func Setup(
r0mux.Handle("/thumbnail/{serverName}/{mediaId}", r0mux.Handle("/thumbnail/{serverName}/{mediaId}",
makeDownloadAPI("thumbnail", cfg, db, client, activeRemoteRequests, activeThumbnailGeneration), makeDownloadAPI("thumbnail", cfg, db, client, activeRemoteRequests, activeThumbnailGeneration),
).Methods(http.MethodGet, http.MethodOptions) ).Methods(http.MethodGet, http.MethodOptions)
r0mux.Handle("/config",
httputil.MakeAuthAPI("config", userAPI, func(req *http.Request, dev *userapi.Device) util.JSONResponse {
return Config(req, cfg)
}),
).Methods(http.MethodGet, http.MethodOptions)
} }
func makeDownloadAPI( func makeDownloadAPI(

View file

@ -511,3 +511,4 @@ Can pass a JSON filter as a query parameter
Local room members can get room messages Local room members can get room messages
Remote room members can get room messages Remote room members can get room messages
Guest users can send messages to guest_access rooms if joined Guest users can send messages to guest_access rooms if joined
Can read configuration endpoint