feat: rainyun server service — list/get/start/stop/reboot/vnc/upgrade
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package rainyun
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.yoresee.cc/nightstar/ry/internal/provider"
|
||||
)
|
||||
|
||||
func init() {
|
||||
provider.Register("rainyun", New)
|
||||
}
|
||||
|
||||
// Rainyun provider — 雨云 cloud platform.
|
||||
type Rainyun struct {
|
||||
client *client
|
||||
server *ServerService
|
||||
}
|
||||
|
||||
// New creates a Rainyun provider from config.
|
||||
func New(cfg provider.ProviderConfig) (provider.Provider, error) {
|
||||
c := newClient(cfg.Endpoint, cfg.APIKey)
|
||||
r := &Rainyun{client: c}
|
||||
r.server = &ServerService{client: c}
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func (r *Rainyun) Name() string { return "rainyun" }
|
||||
func (r *Rainyun) DisplayName() string { return "雨云" }
|
||||
|
||||
// ValidateAuth checks the API key by hitting the user info endpoint.
|
||||
func (r *Rainyun) ValidateAuth(ctx context.Context) error {
|
||||
var data any
|
||||
return r.client.get(ctx, "/user/", &data)
|
||||
}
|
||||
|
||||
func (r *Rainyun) Server() provider.ServerService {
|
||||
if r.server == nil {
|
||||
r.server = &ServerService{client: r.client}
|
||||
}
|
||||
return r.server
|
||||
}
|
||||
func (r *Rainyun) Domain() provider.DomainService { return nil }
|
||||
func (r *Rainyun) Storage() provider.StorageService { return nil }
|
||||
func (r *Rainyun) CDN() provider.CDNService { return nil }
|
||||
func (r *Rainyun) Billing() provider.BillingService { return nil }
|
||||
Reference in New Issue
Block a user