extended URL scheme

This commit is contained in:
ston1th 2020-06-03 23:45:54 +02:00
commit 0994baf5b0
4 changed files with 39 additions and 18 deletions

View file

@ -184,26 +184,25 @@ func (c *ServerClient) getServer(ctx context.Context, node, id string) (s *Serve
}
func (c *ServerClient) GetByURL(ctx context.Context, url string) (s *Server, err error) {
pool, id, err := ParseURL(url)
pool, node, id, err := ParseURL(url)
if err != nil {
return
}
var srv *Server
if pool != "" {
if node == "" && pool != "" {
srv, err = c.client.Pool.FindServerByID(ctx, pool, id)
if err == ErrServerNotFound {
return
}
node = srv.Node
} else if node == "" && pool == "" {
srv, err = c.client.Node.FindServerByID(ctx, id)
if err != nil {
return
}
node = srv.Node
}
srv, err = c.client.Node.FindServerByID(ctx, id)
if err != nil {
return
}
if srv == nil {
err = ErrServerNotFound
return
}
s, cfg, err := c.getServer(ctx, srv.Node, srv.ID)
s, cfg, err := c.getServer(ctx, node, id)
if err != nil {
return
}