[APIV4] POST /caches/invalidate - endpoint for apiV4 (#5756)
Этот коммит содержится в:
коммит произвёл
George Goldberg
родитель
a1994cf7ce
Коммит
fa47132b8f
@@ -20,6 +20,7 @@ func InitSystem() {
|
|||||||
BaseRoutes.ApiRoot.Handle("/config/reload", ApiSessionRequired(configReload)).Methods("POST")
|
BaseRoutes.ApiRoot.Handle("/config/reload", ApiSessionRequired(configReload)).Methods("POST")
|
||||||
BaseRoutes.ApiRoot.Handle("/email/test", ApiSessionRequired(testEmail)).Methods("POST")
|
BaseRoutes.ApiRoot.Handle("/email/test", ApiSessionRequired(testEmail)).Methods("POST")
|
||||||
BaseRoutes.ApiRoot.Handle("/database/recycle", ApiSessionRequired(databaseRecycle)).Methods("POST")
|
BaseRoutes.ApiRoot.Handle("/database/recycle", ApiSessionRequired(databaseRecycle)).Methods("POST")
|
||||||
|
BaseRoutes.ApiRoot.Handle("/caches/invalidate", ApiSessionRequired(invalidateCaches)).Methods("POST")
|
||||||
}
|
}
|
||||||
|
|
||||||
func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) {
|
func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -77,3 +78,19 @@ func databaseRecycle(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
ReturnStatusOK(w)
|
ReturnStatusOK(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func invalidateCaches(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
if !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
|
||||||
|
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err := app.InvalidateAllCaches()
|
||||||
|
if err != nil {
|
||||||
|
c.Err = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
|
||||||
|
ReturnStatusOK(w)
|
||||||
|
}
|
||||||
|
|||||||
@@ -126,5 +126,22 @@ func TestDatabaseRecycle(t *testing.T) {
|
|||||||
|
|
||||||
_, resp = th.SystemAdminClient.DatabaseRecycle()
|
_, resp = th.SystemAdminClient.DatabaseRecycle()
|
||||||
CheckNoError(t, resp)
|
CheckNoError(t, resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestInvalidateCaches(t *testing.T) {
|
||||||
|
th := Setup().InitBasic().InitSystemAdmin()
|
||||||
|
defer TearDown()
|
||||||
|
Client := th.Client
|
||||||
|
|
||||||
|
flag, resp := Client.InvalidateCaches()
|
||||||
|
CheckForbiddenStatus(t, resp)
|
||||||
|
if flag == true {
|
||||||
|
t.Fatal("should not clean the cache due no permission.")
|
||||||
|
}
|
||||||
|
|
||||||
|
flag, resp = th.SystemAdminClient.InvalidateCaches()
|
||||||
|
CheckNoError(t, resp)
|
||||||
|
if flag == false {
|
||||||
|
t.Fatal("should clean the cache")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,6 +154,10 @@ func (c *Client4) GetDatabaseRoute() string {
|
|||||||
return fmt.Sprintf("/database")
|
return fmt.Sprintf("/database")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client4) GetCacheRoute() string {
|
||||||
|
return fmt.Sprintf("/caches")
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client4) GetClusterRoute() string {
|
func (c *Client4) GetClusterRoute() string {
|
||||||
return fmt.Sprintf("/cluster")
|
return fmt.Sprintf("/cluster")
|
||||||
}
|
}
|
||||||
@@ -1154,6 +1158,15 @@ func (c *Client4) DatabaseRecycle() (bool, *Response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client4) InvalidateCaches() (bool, *Response) {
|
||||||
|
if r, err := c.DoApiPost(c.GetCacheRoute()+"/invalidate", ""); err != nil {
|
||||||
|
return false, &Response{StatusCode: r.StatusCode, Error: err}
|
||||||
|
} else {
|
||||||
|
defer closeBody(r)
|
||||||
|
return CheckStatusOK(r), BuildResponse(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Webhooks Section
|
// Webhooks Section
|
||||||
|
|
||||||
// CreateIncomingWebhook creates an incoming webhook for a channel.
|
// CreateIncomingWebhook creates an incoming webhook for a channel.
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user