fix: query params support + remove duplicate response wrappers + fix tests
This commit is contained in:
@@ -27,43 +27,25 @@ type rainyunServer struct {
|
||||
ExpireDate string `json:"expire_date"`
|
||||
}
|
||||
|
||||
// Response wrappers — the client unmarshals the full API envelope (code + data).
|
||||
type serverListResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data []rainyunServer `json:"data"`
|
||||
}
|
||||
|
||||
type serverGetResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data rainyunServer `json:"data"`
|
||||
}
|
||||
|
||||
type vncResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data struct {
|
||||
VNCURL string `json:"vnc_url"`
|
||||
} `json:"data"`
|
||||
}
|
||||
|
||||
func (s *ServerService) List(ctx context.Context) ([]provider.Server, error) {
|
||||
var resp serverListResponse
|
||||
if err := s.client.get(ctx, "/product/rcs/", &resp); err != nil {
|
||||
var raw []rainyunServer
|
||||
if err := s.client.getWithQuery(ctx, "/product/rcs/", map[string]string{"options": "1"}, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
servers := make([]provider.Server, len(resp.Data))
|
||||
for i, r := range resp.Data {
|
||||
servers := make([]provider.Server, len(raw))
|
||||
for i, r := range raw {
|
||||
servers[i] = toServer(r)
|
||||
}
|
||||
return servers, nil
|
||||
}
|
||||
|
||||
func (s *ServerService) Get(ctx context.Context, id string) (*provider.Server, error) {
|
||||
var resp serverGetResponse
|
||||
var raw rainyunServer
|
||||
path := fmt.Sprintf("/product/rcs/%s/", id)
|
||||
if err := s.client.get(ctx, path, &resp); err != nil {
|
||||
if err := s.client.get(ctx, path, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sv := toServer(resp.Data)
|
||||
sv := toServer(raw)
|
||||
return &sv, nil
|
||||
}
|
||||
|
||||
@@ -89,11 +71,13 @@ func (s *ServerService) ResetPassword(ctx context.Context, id string) error {
|
||||
}
|
||||
|
||||
func (s *ServerService) GetVNC(ctx context.Context, id string) (string, error) {
|
||||
var resp vncResponse
|
||||
var resp struct {
|
||||
VNCURL string `json:"vnc_url"`
|
||||
}
|
||||
if err := s.client.get(ctx, fmt.Sprintf("/product/rcs/%s/vnc", id), &resp); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return resp.Data.VNCURL, nil
|
||||
return resp.VNCURL, nil
|
||||
}
|
||||
|
||||
func (s *ServerService) Upgrade(ctx context.Context, id, plan string) error {
|
||||
|
||||
Reference in New Issue
Block a user