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 domain *DomainService storage *StorageService billing *BillingService } // New creates a Rainyun provider from config. func New(cfg provider.ProviderConfig) (provider.Provider, error) { c := newClient(cfg.Endpoint, cfg.APIKey, cfg.Debug) r := &Rainyun{client: c} r.server = &ServerService{client: c} r.domain = &DomainService{client: c} r.storage = &StorageService{client: c} r.billing = &BillingService{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 r.domain } func (r *Rainyun) Storage() provider.StorageService { return r.storage } func (r *Rainyun) CDN() provider.CDNService { return nil } func (r *Rainyun) Billing() provider.BillingService { return r.billing }