Initial commit: omnichannel-mcp — MCP-сервер управления платформой Omnichannel
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package configserver
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// api_configure.go — изменение конфигурации сервиса (compose/env) и её версий.
|
||||
|
||||
// SetCompose устанавливает текущий docker-compose и отправляет его агенту.
|
||||
func (a *API) SetCompose(ctx context.Context, appID int, content string) (*ConfigAck, error) {
|
||||
ctx, cancel := a.withTimeout(ctx)
|
||||
defer cancel()
|
||||
out := &ConfigAck{}
|
||||
body := map[string]string{"content": content}
|
||||
if err := a.Sess.postJSON(ctx, "/api/compose/"+strconv.Itoa(appID), body, out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// SetEnv устанавливает текущий env-файл и отправляет его агенту.
|
||||
func (a *API) SetEnv(ctx context.Context, appID int, filename, content string) (*ConfigAck, error) {
|
||||
ctx, cancel := a.withTimeout(ctx)
|
||||
defer cancel()
|
||||
out := &ConfigAck{}
|
||||
body := map[string]string{"content": content}
|
||||
path := "/api/env/" + strconv.Itoa(appID) + "/" + url.PathEscape(filename)
|
||||
if err := a.Sess.postJSON(ctx, path, body, out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// RestoreCompose восстанавливает версию compose (создаёт новую текущую версию).
|
||||
func (a *API) RestoreCompose(ctx context.Context, versionID int) (*StatusAck, error) {
|
||||
ctx, cancel := a.withTimeout(ctx)
|
||||
defer cancel()
|
||||
out := &StatusAck{}
|
||||
if err := a.Sess.postJSON(ctx, "/api/restore_compose/"+strconv.Itoa(versionID), nil, out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// RestoreEnvVersion восстанавливает версию env-файла.
|
||||
func (a *API) RestoreEnvVersion(ctx context.Context, versionID int) (*StatusAck, error) {
|
||||
ctx, cancel := a.withTimeout(ctx)
|
||||
defer cancel()
|
||||
out := &StatusAck{}
|
||||
if err := a.Sess.postJSON(ctx, "/api/restore_env_version/"+strconv.Itoa(versionID), nil, out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// UpdateConfig повторно отправляет агенту текущую конфигурацию из БД.
|
||||
func (a *API) UpdateConfig(ctx context.Context, appID int) (*TaskAck, error) {
|
||||
ctx, cancel := a.withTimeout(ctx)
|
||||
defer cancel()
|
||||
out := &TaskAck{}
|
||||
if err := a.Sess.postJSON(ctx, "/api/update_config/"+strconv.Itoa(appID), nil, out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
Reference in New Issue
Block a user