mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-01 03:03:10 -06:00
userapi interface and internal api
This commit is contained in:
parent
a01ebba787
commit
9897a6e186
|
|
@ -45,6 +45,22 @@ type UserInternalAPI interface {
|
||||||
QueryDeviceInfos(ctx context.Context, req *QueryDeviceInfosRequest, res *QueryDeviceInfosResponse) error
|
QueryDeviceInfos(ctx context.Context, req *QueryDeviceInfosRequest, res *QueryDeviceInfosResponse) error
|
||||||
QuerySearchProfiles(ctx context.Context, req *QuerySearchProfilesRequest, res *QuerySearchProfilesResponse) error
|
QuerySearchProfiles(ctx context.Context, req *QuerySearchProfilesRequest, res *QuerySearchProfilesResponse) error
|
||||||
QueryOpenIDToken(ctx context.Context, req *QueryOpenIDTokenRequest, res *QueryOpenIDTokenResponse) error
|
QueryOpenIDToken(ctx context.Context, req *QueryOpenIDTokenRequest, res *QueryOpenIDTokenResponse) error
|
||||||
|
|
||||||
|
AllUsers(ctx context.Context, res *IntegerResponse) error
|
||||||
|
NonBridgedUsers(ctx context.Context, res *IntegerResponse) error
|
||||||
|
RegisteredUserByType(ctx context.Context, res *MapResponse) error
|
||||||
|
DailyUsers(ctx context.Context, res *IntegerResponse) error
|
||||||
|
MonthlyUsers(ctx context.Context, res *IntegerResponse) error
|
||||||
|
R30Users(ctx context.Context, res *MapResponse) error
|
||||||
|
R30UsersV2(ctx context.Context, res *MapResponse) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type IntegerResponse struct {
|
||||||
|
Count int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type MapResponse struct {
|
||||||
|
Result map[string]int64
|
||||||
}
|
}
|
||||||
|
|
||||||
type PerformKeyBackupRequest struct {
|
type PerformKeyBackupRequest struct {
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,41 @@ func (t *UserInternalAPITrace) QueryOpenIDToken(ctx context.Context, req *QueryO
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *UserInternalAPITrace) AllUsers(ctx context.Context, res *IntegerResponse) error {
|
||||||
|
//TODO implement me
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *UserInternalAPITrace) NonBridgedUsers(ctx context.Context, res *IntegerResponse) error {
|
||||||
|
//TODO implement me
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *UserInternalAPITrace) RegisteredUserByType(ctx context.Context, res *MapResponse) error {
|
||||||
|
//TODO implement me
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *UserInternalAPITrace) DailyUsers(ctx context.Context, res *IntegerResponse) error {
|
||||||
|
//TODO implement me
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *UserInternalAPITrace) MonthlyUsers(ctx context.Context, res *IntegerResponse) error {
|
||||||
|
//TODO implement me
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *UserInternalAPITrace) R30Users(ctx context.Context, res *MapResponse) error {
|
||||||
|
//TODO implement me
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *UserInternalAPITrace) R30UsersV2(ctx context.Context, res *MapResponse) error {
|
||||||
|
//TODO implement me
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
func js(thing interface{}) string {
|
func js(thing interface{}) string {
|
||||||
b, err := json.Marshal(thing)
|
b, err := json.Marshal(thing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -595,3 +595,66 @@ func (a *UserInternalAPI) QueryKeyBackup(ctx context.Context, req *api.QueryKeyB
|
||||||
}
|
}
|
||||||
res.Keys = result
|
res.Keys = result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *UserInternalAPI) AllUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
count, err := a.DB.AllUsers(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res.Count = count
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UserInternalAPI) NonBridgedUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
count, err := a.DB.NonBridgedUsers(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res.Count = count
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UserInternalAPI) RegisteredUserByType(ctx context.Context, res *api.MapResponse) error {
|
||||||
|
data, err := a.DB.RegisteredUserByType(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res.Result = data
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UserInternalAPI) DailyUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
count, err := a.DB.DailyUsers(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res.Count = count
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UserInternalAPI) MonthlyUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
count, err := a.DB.MonthlyUsers(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res.Count = count
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UserInternalAPI) R30Users(ctx context.Context, res *api.MapResponse) error {
|
||||||
|
data, err := a.DB.R30Users(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res.Result = data
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UserInternalAPI) R30UsersV2(ctx context.Context, res *api.MapResponse) error {
|
||||||
|
data, err := a.DB.R30UsersV2(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
res.Result = data
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -46,6 +46,14 @@ const (
|
||||||
QueryDeviceInfosPath = "/userapi/queryDeviceInfos"
|
QueryDeviceInfosPath = "/userapi/queryDeviceInfos"
|
||||||
QuerySearchProfilesPath = "/userapi/querySearchProfiles"
|
QuerySearchProfilesPath = "/userapi/querySearchProfiles"
|
||||||
QueryOpenIDTokenPath = "/userapi/queryOpenIDToken"
|
QueryOpenIDTokenPath = "/userapi/queryOpenIDToken"
|
||||||
|
|
||||||
|
StatsAllUsers = "/userapi/stats/allUsers"
|
||||||
|
StatsNonBridgedUsers = "/userapi/stats/nonBridgedUsers"
|
||||||
|
StatsRegisteredUserByType = "/userapi/stats/registeredUserByType"
|
||||||
|
StatsDailyUsers = "/userapi/stats/dailyUsers"
|
||||||
|
StatsMonthlyUsers = "/userapi/stats/monthlyUsers"
|
||||||
|
StatsR30Users = "/userapi/stats/r30Users"
|
||||||
|
StatsR30UsersV2 = "/userapi/stats/r30UsersV2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewUserAPIClient creates a UserInternalAPI implemented by talking to a HTTP POST API.
|
// NewUserAPIClient creates a UserInternalAPI implemented by talking to a HTTP POST API.
|
||||||
|
|
@ -249,3 +257,59 @@ func (h *httpUserInternalAPI) QueryKeyBackup(ctx context.Context, req *api.Query
|
||||||
res.Error = err.Error()
|
res.Error = err.Error()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *httpUserInternalAPI) AllUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "AllUsers")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.apiURL + StatsAllUsers
|
||||||
|
return httputil.PostJSON(ctx, span, h.httpClient, apiURL, nil, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpUserInternalAPI) NonBridgedUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "NonBridgedUsers")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.apiURL + StatsNonBridgedUsers
|
||||||
|
return httputil.PostJSON(ctx, span, h.httpClient, apiURL, nil, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpUserInternalAPI) RegisteredUserByType(ctx context.Context, res *api.MapResponse) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "RegisteredUserByType")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.apiURL + StatsRegisteredUserByType
|
||||||
|
return httputil.PostJSON(ctx, span, h.httpClient, apiURL, nil, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpUserInternalAPI) DailyUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "DailyUsers")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.apiURL + StatsDailyUsers
|
||||||
|
return httputil.PostJSON(ctx, span, h.httpClient, apiURL, nil, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpUserInternalAPI) MonthlyUsers(ctx context.Context, res *api.IntegerResponse) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "MonthlyUsers")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.apiURL + StatsMonthlyUsers
|
||||||
|
return httputil.PostJSON(ctx, span, h.httpClient, apiURL, nil, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpUserInternalAPI) R30Users(ctx context.Context, res *api.MapResponse) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "R30Users")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.apiURL + StatsR30Users
|
||||||
|
return httputil.PostJSON(ctx, span, h.httpClient, apiURL, nil, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpUserInternalAPI) R30UsersV2(ctx context.Context, res *api.MapResponse) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "R30UsersV2")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.apiURL + StatsR30UsersV2
|
||||||
|
return httputil.PostJSON(ctx, span, h.httpClient, apiURL, nil, res)
|
||||||
|
}
|
||||||
|
|
@ -265,4 +265,74 @@ func AddRoutes(internalAPIMux *mux.Router, s api.UserInternalAPI) {
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
internalAPIMux.Handle(StatsAllUsers,
|
||||||
|
httputil.MakeInternalAPI("statsAllUsers", func(req *http.Request) util.JSONResponse {
|
||||||
|
response := api.IntegerResponse{}
|
||||||
|
err := s.AllUsers(req.Context(), &response)
|
||||||
|
if err != nil {
|
||||||
|
return util.JSONResponse{Code: http.StatusBadRequest, JSON: &response}
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(StatsNonBridgedUsers,
|
||||||
|
httputil.MakeInternalAPI("statsNonBridgedUsers", func(req *http.Request) util.JSONResponse {
|
||||||
|
response := api.IntegerResponse{}
|
||||||
|
err := s.NonBridgedUsers(req.Context(), &response)
|
||||||
|
if err != nil {
|
||||||
|
return util.JSONResponse{Code: http.StatusBadRequest, JSON: &response}
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(StatsDailyUsers,
|
||||||
|
httputil.MakeInternalAPI("statsDailyUsers", func(req *http.Request) util.JSONResponse {
|
||||||
|
response := api.IntegerResponse{}
|
||||||
|
err := s.DailyUsers(req.Context(), &response)
|
||||||
|
if err != nil {
|
||||||
|
return util.JSONResponse{Code: http.StatusBadRequest, JSON: &response}
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(StatsMonthlyUsers,
|
||||||
|
httputil.MakeInternalAPI("statsMonthlyUsers", func(req *http.Request) util.JSONResponse {
|
||||||
|
response := api.IntegerResponse{}
|
||||||
|
err := s.MonthlyUsers(req.Context(), &response)
|
||||||
|
if err != nil {
|
||||||
|
return util.JSONResponse{Code: http.StatusBadRequest, JSON: &response}
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(StatsRegisteredUserByType,
|
||||||
|
httputil.MakeInternalAPI("statsRegisteredUserByType", func(req *http.Request) util.JSONResponse {
|
||||||
|
response := api.MapResponse{}
|
||||||
|
err := s.RegisteredUserByType(req.Context(), &response)
|
||||||
|
if err != nil {
|
||||||
|
return util.JSONResponse{Code: http.StatusBadRequest, JSON: &response}
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(StatsR30Users,
|
||||||
|
httputil.MakeInternalAPI("statsR30Users", func(req *http.Request) util.JSONResponse {
|
||||||
|
response := api.MapResponse{}
|
||||||
|
err := s.R30Users(req.Context(), &response)
|
||||||
|
if err != nil {
|
||||||
|
return util.JSONResponse{Code: http.StatusBadRequest, JSON: &response}
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(StatsR30UsersV2,
|
||||||
|
httputil.MakeInternalAPI("statsR30UsersV2", func(req *http.Request) util.JSONResponse {
|
||||||
|
response := api.MapResponse{}
|
||||||
|
err := s.R30Users(req.Context(), &response)
|
||||||
|
if err != nil {
|
||||||
|
return util.JSONResponse{Code: http.StatusBadRequest, JSON: &response}
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue