fix: query params support + remove duplicate response wrappers + fix tests

This commit is contained in:
2026-07-28 16:45:45 +08:00
parent 4e348031a6
commit 284a503541
6 changed files with 43 additions and 49 deletions
+11 -27
View File
@@ -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 {