mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 06:40:54 +03:00
WebUI: add a JSON helper function
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -16,6 +16,7 @@ package httpd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"html/template"
|
||||
@@ -2878,19 +2879,17 @@ func getAllAdmins(w http.ResponseWriter, r *http.Request) {
|
||||
sendAPIResponse(w, r, nil, util.I18nErrorInvalidToken, http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
admins := make([]dataprovider.Admin, 0, 50)
|
||||
for {
|
||||
a, err := dataprovider.GetAdmins(defaultQueryLimit, len(admins), dataprovider.OrderASC)
|
||||
|
||||
dataGetter := func(limit, offset int) ([]byte, int, error) {
|
||||
results, err := dataprovider.GetAdmins(limit, offset, dataprovider.OrderASC)
|
||||
if err != nil {
|
||||
sendAPIResponse(w, r, err, getI18NErrorString(err, util.I18nError500Message), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
admins = append(admins, a...)
|
||||
if len(a) < defaultQueryLimit {
|
||||
break
|
||||
return nil, 0, err
|
||||
}
|
||||
data, err := json.Marshal(results)
|
||||
return data, len(results), err
|
||||
}
|
||||
render.JSON(w, r, admins)
|
||||
|
||||
streamJSONArray(w, defaultQueryLimit, dataGetter)
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleGetWebAdmins(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -3043,19 +3042,17 @@ func getAllUsers(w http.ResponseWriter, r *http.Request) {
|
||||
sendAPIResponse(w, r, nil, util.I18nErrorInvalidToken, http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
users := make([]dataprovider.User, 0, 100)
|
||||
for {
|
||||
u, err := dataprovider.GetUsers(defaultQueryLimit, len(users), dataprovider.OrderASC, claims.Role)
|
||||
|
||||
dataGetter := func(limit, offset int) ([]byte, int, error) {
|
||||
results, err := dataprovider.GetUsers(limit, offset, dataprovider.OrderASC, claims.Role)
|
||||
if err != nil {
|
||||
sendAPIResponse(w, r, err, getI18NErrorString(err, util.I18nError500Message), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
users = append(users, u...)
|
||||
if len(u) < defaultQueryLimit {
|
||||
break
|
||||
return nil, 0, err
|
||||
}
|
||||
data, err := json.Marshal(results)
|
||||
return data, len(results), err
|
||||
}
|
||||
render.JSON(w, r, users)
|
||||
|
||||
streamJSONArray(w, defaultQueryLimit, dataGetter)
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleGetWebUsers(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -3538,19 +3535,17 @@ func (s *httpdServer) getWebVirtualFolders(w http.ResponseWriter, r *http.Reques
|
||||
|
||||
func getAllFolders(w http.ResponseWriter, r *http.Request) {
|
||||
r.Body = http.MaxBytesReader(w, r.Body, maxRequestSize)
|
||||
folders := make([]vfs.BaseVirtualFolder, 0, 50)
|
||||
for {
|
||||
f, err := dataprovider.GetFolders(defaultQueryLimit, len(folders), dataprovider.OrderASC, false)
|
||||
|
||||
dataGetter := func(limit, offset int) ([]byte, int, error) {
|
||||
results, err := dataprovider.GetFolders(limit, offset, dataprovider.OrderASC, false)
|
||||
if err != nil {
|
||||
sendAPIResponse(w, r, err, getI18NErrorString(err, util.I18nError500Message), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
folders = append(folders, f...)
|
||||
if len(f) < defaultQueryLimit {
|
||||
break
|
||||
return nil, 0, err
|
||||
}
|
||||
data, err := json.Marshal(results)
|
||||
return data, len(results), err
|
||||
}
|
||||
render.JSON(w, r, folders)
|
||||
|
||||
streamJSONArray(w, defaultQueryLimit, dataGetter)
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleWebGetFolders(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -3578,19 +3573,17 @@ func (s *httpdServer) getWebGroups(w http.ResponseWriter, r *http.Request, limit
|
||||
|
||||
func getAllGroups(w http.ResponseWriter, r *http.Request) {
|
||||
r.Body = http.MaxBytesReader(w, r.Body, maxRequestSize)
|
||||
groups := make([]dataprovider.Group, 0, 50)
|
||||
for {
|
||||
f, err := dataprovider.GetGroups(defaultQueryLimit, len(groups), dataprovider.OrderASC, false)
|
||||
|
||||
dataGetter := func(limit, offset int) ([]byte, int, error) {
|
||||
results, err := dataprovider.GetGroups(limit, offset, dataprovider.OrderASC, false)
|
||||
if err != nil {
|
||||
sendAPIResponse(w, r, err, getI18NErrorString(err, util.I18nError500Message), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
groups = append(groups, f...)
|
||||
if len(f) < defaultQueryLimit {
|
||||
break
|
||||
return nil, 0, err
|
||||
}
|
||||
data, err := json.Marshal(results)
|
||||
return data, len(results), err
|
||||
}
|
||||
render.JSON(w, r, groups)
|
||||
|
||||
streamJSONArray(w, defaultQueryLimit, dataGetter)
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleWebGetGroups(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -3707,19 +3700,17 @@ func (s *httpdServer) getWebEventActions(w http.ResponseWriter, r *http.Request,
|
||||
|
||||
func getAllActions(w http.ResponseWriter, r *http.Request) {
|
||||
r.Body = http.MaxBytesReader(w, r.Body, maxRequestSize)
|
||||
actions := make([]dataprovider.BaseEventAction, 0, 10)
|
||||
for {
|
||||
res, err := dataprovider.GetEventActions(defaultQueryLimit, len(actions), dataprovider.OrderASC, false)
|
||||
|
||||
dataGetter := func(limit, offset int) ([]byte, int, error) {
|
||||
results, err := dataprovider.GetEventActions(limit, offset, dataprovider.OrderASC, false)
|
||||
if err != nil {
|
||||
sendAPIResponse(w, r, err, getI18NErrorString(err, util.I18nError500Message), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
actions = append(actions, res...)
|
||||
if len(res) < defaultQueryLimit {
|
||||
break
|
||||
return nil, 0, err
|
||||
}
|
||||
data, err := json.Marshal(results)
|
||||
return data, len(results), err
|
||||
}
|
||||
render.JSON(w, r, actions)
|
||||
|
||||
streamJSONArray(w, defaultQueryLimit, dataGetter)
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleWebGetEventActions(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -3819,19 +3810,17 @@ func (s *httpdServer) handleWebUpdateEventActionPost(w http.ResponseWriter, r *h
|
||||
|
||||
func getAllRules(w http.ResponseWriter, r *http.Request) {
|
||||
r.Body = http.MaxBytesReader(w, r.Body, maxRequestSize)
|
||||
rules := make([]dataprovider.EventRule, 0, 10)
|
||||
for {
|
||||
res, err := dataprovider.GetEventRules(defaultQueryLimit, len(rules), dataprovider.OrderASC)
|
||||
|
||||
dataGetter := func(limit, offset int) ([]byte, int, error) {
|
||||
results, err := dataprovider.GetEventRules(limit, offset, dataprovider.OrderASC)
|
||||
if err != nil {
|
||||
sendAPIResponse(w, r, err, getI18NErrorString(err, util.I18nError500Message), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
rules = append(rules, res...)
|
||||
if len(res) < defaultQueryLimit {
|
||||
break
|
||||
return nil, 0, err
|
||||
}
|
||||
data, err := json.Marshal(results)
|
||||
return data, len(results), err
|
||||
}
|
||||
render.JSON(w, r, rules)
|
||||
|
||||
streamJSONArray(w, defaultQueryLimit, dataGetter)
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleWebGetEventRules(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -3942,19 +3931,17 @@ func (s *httpdServer) getWebRoles(w http.ResponseWriter, r *http.Request, limit
|
||||
|
||||
func getAllRoles(w http.ResponseWriter, r *http.Request) {
|
||||
r.Body = http.MaxBytesReader(w, r.Body, maxRequestSize)
|
||||
roles := make([]dataprovider.Role, 0, 10)
|
||||
for {
|
||||
res, err := dataprovider.GetRoles(defaultQueryLimit, len(roles), dataprovider.OrderASC, false)
|
||||
|
||||
dataGetter := func(limit, offset int) ([]byte, int, error) {
|
||||
results, err := dataprovider.GetRoles(limit, offset, dataprovider.OrderASC, false)
|
||||
if err != nil {
|
||||
sendAPIResponse(w, r, err, getI18NErrorString(err, util.I18nError500Message), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
roles = append(roles, res...)
|
||||
if len(res) < defaultQueryLimit {
|
||||
break
|
||||
return nil, 0, err
|
||||
}
|
||||
data, err := json.Marshal(results)
|
||||
return data, len(results), err
|
||||
}
|
||||
render.JSON(w, r, roles)
|
||||
|
||||
streamJSONArray(w, defaultQueryLimit, dataGetter)
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleWebGetRoles(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
Reference in New Issue
Block a user