readysite / pkg / platform / providers / digitalocean / platform.go
665 B
platform.go
package digitalocean

import (
	"context"
	"fmt"

	"github.com/digitalocean/godo"
	"github.com/readysite/readysite/pkg/platform"
	"golang.org/x/oauth2"
)

type backend struct {
	client *godo.Client
	ctx    context.Context
}

// New creates a DigitalOcean platform.
func New(token string) (*platform.Platform, error) {
	if token == "" {
		return nil, fmt.Errorf("token required")
	}

	tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})
	oauthClient := oauth2.NewClient(context.Background(), tokenSource)

	return &platform.Platform{
		Backend: &backend{
			client: godo.NewClient(oauthClient),
			ctx:    context.Background(),
		},
	}, nil
}
← Back