push_client/client.go

137 lines
3.6 KiB
Go
Raw Normal View History

2025-01-27 12:32:05 +03:00
package push_client
2025-02-06 18:25:34 +03:00
import (
"context"
"strconv"
"git.bit5.ru/backend/errors"
"git.bit5.ru/backend/push_common"
"github.com/go-logr/logr"
"go.opentelemetry.io/otel"
)
const tracerName = "git.bit5.ru/backend/push_client"
var tracer = otel.Tracer(tracerName)
2025-01-27 12:32:05 +03:00
type Client struct {
Addr string
}
2025-01-27 12:35:40 +03:00
func NewClient(addr string) *Client {
return &Client{
Addr: addr,
}
}
2025-02-06 18:25:34 +03:00
func (c *Client) ServerInfo() (*push_common.ServerInfo, error) {
var info push_common.ServerInfo
err := httpGet(c.Addr+"/api/server_info", &info)
return &info, err
}
func (c *Client) UserPushPreviews(ctx context.Context) ([]*push_common.PushPreview, error) {
var previews []*push_common.PushPreview
if err := httpGet(c.Addr+"/api/push/previews/user", &previews); err != nil {
return nil, err
}
return previews, nil
}
func (c *Client) AutoPushPreviews() ([]*push_common.PushPreview, error) {
var previews []*push_common.PushPreview
if err := httpGet(c.Addr+"/api/push/previews/auto", &previews); err != nil {
return nil, err
}
return previews, nil
}
func (c *Client) NewPush(req push_common.PushRequest) (int, error) {
resp, err := httpPostDataDeprecated(c.Addr+"/api/push/add", req)
if err != nil {
return 0, err
}
return strconv.Atoi(resp)
}
func (c *Client) SchedulePush(ctx context.Context, def *push_common.PushDef) (int, error) {
_, span := tracer.Start(ctx, "Client.SchedulePush")
defer span.End()
resp, err := httpPostDataDeprecated(c.Addr+"/api/push/schedule", def)
if err != nil {
return 0, err
}
return strconv.Atoi(resp)
}
func (c *Client) StartPush(id int) error {
return httpPost(c.Addr + "/api/push/start/" + strconv.Itoa(id))
}
func (c *Client) PausePush(id int) error {
return httpPost(c.Addr + "/api/push/pause/" + strconv.Itoa(id))
}
/*
func (c *Client) ArchivePush(ctx context.Context, id int) error {
return httpPost(c.Addr + "/api/push/archive/" + strconv.Itoa(id))
}
*/
func (c *Client) DelPush(ctx context.Context, id int) error {
return httpPost(c.Addr + "/api/push/del/" + strconv.Itoa(id))
}
func (c *Client) GetPush(id int) (*push_common.Push, error) {
var push push_common.Push
err := httpGet(c.Addr+"/api/push/get/"+strconv.Itoa(id), &push)
return &push, err
}
func (c *Client) GetPushPayload(id int) (*push_common.PushPayload, error) {
var payload *push_common.PushPayload
if err := httpGet(c.Addr+"/api/push/get_payload/"+strconv.Itoa(id), &payload); err != nil {
return nil, err
}
return payload, nil
}
func (c *Client) EditPushRequest(id int, payload push_common.PushPayload) error {
_, err := httpPostDataDeprecated(c.Addr+"/api/push/edit/"+strconv.Itoa(id), payload)
return err
}
func (c *Client) GetIncomingPushes(ctx context.Context) ([]*push_common.IncomingPushInfo, error) {
_, span := tracer.Start(ctx, "Client.GetIncomingPushes")
defer span.End()
var pushes []*push_common.IncomingPushInfo
if err := httpGet(c.Addr+"/api/push/incoming_pushes", &pushes); err != nil {
return nil, errors.WithMessage(err, "Can not load incoming pushes.")
}
return pushes, nil
}
func (c *Client) GetPushesToClean(ctx context.Context) ([]*push_common.Push, error) {
_, span := tracer.Start(ctx, "Client.GetPushesToClean")
defer span.End()
var lst []*push_common.Push
if err := httpGet(c.Addr+"/api/push/list_to_clean", &lst); err != nil {
return nil, errors.WithMessage(err, "Can not load list_to_clean.")
}
return lst, nil
}
func (c *Client) LaunchPush(ctx context.Context, logger logr.Logger, launchRequest *push_common.PushLaunchRequest) error {
_, span := tracer.Start(ctx, "Client.LaunchPush")
defer span.End()
_, err := httpPostData(logger, c.Addr+"/api/push/launch", launchRequest)
return err
}