52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
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)
|
|
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 }
|