Files
APIPark/gateway/apinto/client.go
2024-12-05 14:39:57 +08:00

88 lines
1.9 KiB
Go

package apinto
import (
"context"
"strings"
"github.com/APIParkLab/APIPark/gateway"
admin_client "github.com/eolinker/eosc/process-admin/client"
)
var _ gateway.IClientDriver = (*ClientDriver)(nil)
type ClientDriver struct {
client admin_client.Client
}
func (c *ClientDriver) Strategy() gateway.IStrategyClient {
return NewStrategyClient(c.client)
}
func (c *ClientDriver) Close(ctx context.Context) error {
if c.client != nil {
return c.client.Close()
}
return nil
}
func (c *ClientDriver) Commit(ctx context.Context) error {
return c.client.Commit(ctx)
}
func (c *ClientDriver) Rollback(ctx context.Context) error {
return c.Rollback(ctx)
}
func (c *ClientDriver) Begin(ctx context.Context) error {
return c.client.Begin(ctx)
}
func (c *ClientDriver) Project() gateway.IProjectClient {
return NewProjectClient(c.client)
}
func (c *ClientDriver) Service() gateway.IServiceClient {
return NewServiceClient(c.client)
}
func (c *ClientDriver) Subscribe() gateway.ISubscribeClient {
return NewSubscribeClient(c.client)
}
func (c *ClientDriver) Application() gateway.IApplicationClient {
return NewApplicationClient(c.client)
}
func (c *ClientDriver) Dynamic(resource string) (gateway.IDynamicClient, error) {
return NewDynamicClient(c.client, resource)
}
func (c *ClientDriver) PluginSetting() gateway.IPluginSetting {
return NewPluginSettingClient(c.client)
}
func NewClientDriver(cfg *gateway.ClientConfig) (*ClientDriver, error) {
address := make([]string, 0, len(cfg.Addresses))
for _, addr := range cfg.Addresses {
addr = strings.TrimPrefix(addr, "http://")
addr = strings.TrimPrefix(addr, "https://")
address = append(address, addr)
}
client, err := admin_client.New(address...)
if err != nil {
return nil, err
}
return &ClientDriver{
client: client,
}, nil
}
func genWorkerID(id string, profession string) string {
suffix := "@" + profession
if strings.HasSuffix(id, suffix) {
return id
}
return id + suffix
}