61 lines
2.1 KiB
Go
61 lines
2.1 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
URLRequestStatsVHost = "/v1/stats/current/vhosts/%s"
|
|
URLRequestStatsApp = "/v1/stats/current/vhosts/%s/apps/%s"
|
|
URLRequestStatsStream = "/v1/stats/current/vhosts/%s/apps/%s/streams/%s"
|
|
)
|
|
|
|
type ResponseStats struct {
|
|
Message string `json:"message"`
|
|
StatusCode int `json:"statusCode"`
|
|
Data *ResponseStatsData `json:"response,omitempty"`
|
|
}
|
|
|
|
type ResponseStatsData struct {
|
|
// - timestamp - time.TIme has problem with nanosecond in JSON
|
|
CreatedTime string `json:"createdTime" example:"2021-07-19T23:13:12.162+0200"`
|
|
LastRecvTime string `json:"lastRecvTime" example:"2021-07-19T23:23:27.274+0200"`
|
|
LastSentTime string `json:"lastSentTime" example:"2021-07-19T23:23:27.077+0200"`
|
|
LastUpdatedTime string `json:"lastUpdatedTime" example:"2021-07-19T23:23:27.274+0200"`
|
|
MaxTotalConnectionTime string `json:"maxTotalConnectionTime" example:"2021-07-19T23:16:37.851+0200"`
|
|
// - coonnections
|
|
TotalConnections int `json:"totalConnections" example:"1"`
|
|
MaxTotalConnections int `json:"maxTotalConnections" example:"2"`
|
|
// - traffic
|
|
TotalBytesIn uint64 `json:"totalBytesIn" example:"120197570"`
|
|
TotalBytesOut uint64 `json:"totalBytesOut" example:"117022184"`
|
|
}
|
|
|
|
func (c *Client) RequestStatsVHost(vhost string) (*ResponseStats, error) {
|
|
req := ResponseStats{}
|
|
url := fmt.Sprintf(URLRequestStatsVHost, vhost)
|
|
if err := c.Request(http.MethodGet, url, nil, &req); err != nil {
|
|
return nil, err
|
|
}
|
|
return &req, nil
|
|
}
|
|
|
|
func (c *Client) RequestStatsApp(vhost, app string) (*ResponseStats, error) {
|
|
req := ResponseStats{}
|
|
url := fmt.Sprintf(URLRequestStatsApp, vhost, app)
|
|
if err := c.Request(http.MethodGet, url, nil, &req); err != nil {
|
|
return nil, err
|
|
}
|
|
return &req, nil
|
|
}
|
|
|
|
func (c *Client) RequestStatsStream(vhost, app, stream string) (*ResponseStats, error) {
|
|
req := ResponseStats{}
|
|
url := fmt.Sprintf(URLRequestStatsStream, vhost, app, stream)
|
|
if err := c.Request(http.MethodGet, url, nil, &req); err != nil {
|
|
return nil, err
|
|
}
|
|
return &req, nil
|
|
}
|