Browse Source

api: add item count to /list endpoints (#1813) (#1829)

pull/1828/head
Alessandro Ros 2 years ago committed by GitHub
parent
commit
e10055ad69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      internal/core/api.go
  2. 6
      internal/core/api_defs.go
  3. 14
      internal/core/api_test.go

9
internal/core/api.go

@ -449,6 +449,7 @@ func (a *api) onPathsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -480,6 +481,7 @@ func (a *api) onRTSPConnsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -512,6 +514,7 @@ func (a *api) onRTSPSessionsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -559,6 +562,7 @@ func (a *api) onRTSPSConnsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -591,6 +595,7 @@ func (a *api) onRTSPSSessionsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -638,6 +643,7 @@ func (a *api) onRTMPConnsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -685,6 +691,7 @@ func (a *api) onRTMPSConnsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -732,6 +739,7 @@ func (a *api) onHLSMuxersList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)
@ -759,6 +767,7 @@ func (a *api) onWebRTCSessionsList(ctx *gin.Context) {
return return
} }
data.ItemCount = len(data.Items)
pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page"))
if err != nil { if err != nil {
ctx.AbortWithStatus(http.StatusBadRequest) ctx.AbortWithStatus(http.StatusBadRequest)

6
internal/core/api_defs.go

@ -20,6 +20,7 @@ type apiPath struct {
} }
type apiPathsList struct { type apiPathsList struct {
ItemCount int `json:"itemCount"`
PageCount int `json:"pageCount"` PageCount int `json:"pageCount"`
Items []*apiPath `json:"items"` Items []*apiPath `json:"items"`
} }
@ -32,6 +33,7 @@ type apiHLSMuxer struct {
} }
type apiHLSMuxersList struct { type apiHLSMuxersList struct {
ItemCount int `json:"itemCount"`
PageCount int `json:"pageCount"` PageCount int `json:"pageCount"`
Items []*apiHLSMuxer `json:"items"` Items []*apiHLSMuxer `json:"items"`
} }
@ -45,6 +47,7 @@ type apiRTSPConn struct {
} }
type apiRTSPConnsList struct { type apiRTSPConnsList struct {
ItemCount int `json:"itemCount"`
PageCount int `json:"pageCount"` PageCount int `json:"pageCount"`
Items []*apiRTSPConn `json:"items"` Items []*apiRTSPConn `json:"items"`
} }
@ -59,6 +62,7 @@ type apiRTMPConn struct {
} }
type apiRTMPConnsList struct { type apiRTMPConnsList struct {
ItemCount int `json:"itemCount"`
PageCount int `json:"pageCount"` PageCount int `json:"pageCount"`
Items []*apiRTMPConn `json:"items"` Items []*apiRTMPConn `json:"items"`
} }
@ -73,6 +77,7 @@ type apiRTSPSession struct {
} }
type apiRTSPSessionsList struct { type apiRTSPSessionsList struct {
ItemCount int `json:"itemCount"`
PageCount int `json:"pageCount"` PageCount int `json:"pageCount"`
Items []*apiRTSPSession `json:"items"` Items []*apiRTSPSession `json:"items"`
} }
@ -90,6 +95,7 @@ type apiWebRTCSession struct {
} }
type apiWebRTCSessionsList struct { type apiWebRTCSessionsList struct {
ItemCount int `json:"itemCount"`
PageCount int `json:"pageCount"` PageCount int `json:"pageCount"`
Items []*apiWebRTCSession `json:"items"` Items []*apiWebRTCSession `json:"items"`
} }

14
internal/core/api_test.go

@ -216,6 +216,7 @@ func TestAPIPathsList(t *testing.T) {
} }
type pathList struct { type pathList struct {
ItemCount int `json:"itemCount"`
PageCount int `json:"pageCount"` PageCount int `json:"pageCount"`
Items []path `json:"items"` Items []path `json:"items"`
} }
@ -265,6 +266,7 @@ func TestAPIPathsList(t *testing.T) {
var out pathList var out pathList
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out) httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out)
require.Equal(t, pathList{ require.Equal(t, pathList{
ItemCount: 1,
PageCount: 1, PageCount: 1,
Items: []path{{ Items: []path{{
Name: "mypath", Name: "mypath",
@ -327,6 +329,7 @@ func TestAPIPathsList(t *testing.T) {
var out pathList var out pathList
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out) httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out)
require.Equal(t, pathList{ require.Equal(t, pathList{
ItemCount: 1,
PageCount: 1, PageCount: 1,
Items: []path{{ Items: []path{{
Name: "mypath", Name: "mypath",
@ -353,6 +356,7 @@ func TestAPIPathsList(t *testing.T) {
var out pathList var out pathList
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out) httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out)
require.Equal(t, pathList{ require.Equal(t, pathList{
ItemCount: 1,
PageCount: 1, PageCount: 1,
Items: []path{{ Items: []path{{
Name: "mypath", Name: "mypath",
@ -379,6 +383,7 @@ func TestAPIPathsList(t *testing.T) {
var out pathList var out pathList
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out) httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out)
require.Equal(t, pathList{ require.Equal(t, pathList{
ItemCount: 1,
PageCount: 1, PageCount: 1,
Items: []path{{ Items: []path{{
Name: "mypath", Name: "mypath",
@ -405,6 +410,7 @@ func TestAPIPathsList(t *testing.T) {
var out pathList var out pathList
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out) httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/paths/list", nil, &out)
require.Equal(t, pathList{ require.Equal(t, pathList{
ItemCount: 1,
PageCount: 1, PageCount: 1,
Items: []path{{ Items: []path{{
Name: "mypath", Name: "mypath",
@ -673,7 +679,8 @@ func TestAPIProtocolList(t *testing.T) {
} }
var out struct { var out struct {
Items []struct { ItemCount int `json:"itemCount"`
Items []struct {
State string `json:"state"` State string `json:"state"`
} `json:"items"` } `json:"items"`
} }
@ -685,7 +692,8 @@ func TestAPIProtocolList(t *testing.T) {
case "hls": case "hls":
var out struct { var out struct {
Items []struct { ItemCount int `json:"itemCount"`
Items []struct {
Created string `json:"created"` Created string `json:"created"`
LastRequest string `json:"lastRequest"` LastRequest string `json:"lastRequest"`
} `json:"items"` } `json:"items"`
@ -708,7 +716,7 @@ func TestAPIProtocolList(t *testing.T) {
} }
var out struct { var out struct {
PageCount int `json:"pageCount"` ItemCount int `json:"itemCount"`
Items []item `json:"items"` Items []item `json:"items"`
} }
httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/webrtcsessions/list", nil, &out) httpRequest(t, hc, http.MethodGet, "http://localhost:9997/v2/webrtcsessions/list", nil, &out)

Loading…
Cancel
Save