rest

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2025 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	APIVersion = 2
	APIURL     = fmt.Sprintf("https://api.squarecloud.app/v%d", APIVersion)
)
View Source
var (
	// Square Cloud Service
	EndpointServiceStatistics = func() string { return "/service/statistics" }

	// User
	EndpointUser          = func() string { return "/users/me" }
	EndpointUserSnapshots = func(snapshotType string) string {
		return fmt.Sprintf("/users/snapshots?scope=%s", snapshotType)
	}

	// Application
	EndpointApplication            = func() string { return "/apps" }
	EndpointApplicationListStatus  = func() string { return "/apps/status" }
	EndpointApplicationInformation = func(appID string) string { return fmt.Sprintf("/apps/%s", appID) }
	EndpointApplicationStatus      = func(appID string) string { return fmt.Sprintf("/apps/%s/status", appID) }
	EndpointApplicationLogs        = func(appID string) string { return fmt.Sprintf("/apps/%s/logs", appID) }
	EndpointApplicationStart       = func(appID string) string { return fmt.Sprintf("/apps/%s/start", appID) }
	EndpointApplicationRestart     = func(appID string) string { return fmt.Sprintf("/apps/%s/restart", appID) }
	EndpointApplicationStop        = func(appID string) string { return fmt.Sprintf("/apps/%s/stop", appID) }
	EndpointApplicationSnapshots   = func(appID string) string { return fmt.Sprintf("/apps/%s/snapshots", appID) }
	EndpointApplicationCommit      = func(appID string) string { return fmt.Sprintf("/apps/%s/commit", appID) }

	// Application File Manager
	EndpointApplicationFiles    = func(appID, path string) string { return fmt.Sprintf("/apps/%s/files?path=%s", appID, path) }
	EndpointApplicationFileRead = func(appID, path string) string { return fmt.Sprintf("/apps/%s/files/content?path=%s", appID, path) }

	// Application Deploy
	EndpointApplicationDeploys           = func(appID string) string { return fmt.Sprintf("/apps/%s/deploy/list", appID) }
	EndpointApplicationGithubIntegration = func(appID string) string { return fmt.Sprintf("/apps/%s/deploy/git-webhook", appID) }

	// Application Network
	EndpointApplicationNetwork      = func(appID string) string { return fmt.Sprintf("/apps/%s/network/analytics", appID) }
	EndpointApplicationCustomDomain = func(appID, domain string) string { return fmt.Sprintf("/apps/%s/network/custom/%s", appID, domain) }
)

Functions

This section is empty.

Types

type Applications

type Applications interface {
	GetApplications(options ...RequestOpt) ([]squarecloud.UserApplication, error)
	GetApplicationListStatus(options ...RequestOpt) ([]squarecloud.ApplicationListStatus, error)

	PostApplications(reader io.Reader, options ...RequestOpt) (*squarecloud.ApplicationUploaded, error)

	GetApplication(appID string, options ...RequestOpt) (squarecloud.Application, error)
	GetApplicationStatus(appID string, options ...RequestOpt) (squarecloud.ApplicationStatus, error)

	GetApplicationLogs(appID string, options ...RequestOpt) (squarecloud.ApplicationLogs, error)
	PostApplicationSignal(appID string, signal squarecloud.ApplicationSignal, options ...RequestOpt) error
	PostApplicationCommit(appID string, reader io.Reader, options ...RequestOpt) error

	GetApplicationBackups(appID string, options ...RequestOpt) ([]squarecloud.ApplicationBackup, error)
	CreateApplicationBackup(appID string, options ...RequestOpt) (squarecloud.ApplicationBackupCreated, error)

	DeleteApplication(appID string, options ...RequestOpt) error
}

func NewApplications

func NewApplications(client Client) Applications

type Client

type Client interface {
	HTTPClient() *http.Client
	Request(method, url string, rqBody []byte, rsBody any, options ...RequestOpt) error

	Close()
}

func NewClient

func NewClient(token string, opts ...ConfigOpt) Client

type Config

type Config struct {
	Logger     *slog.Logger
	HTTPClient *http.Client
	URL        string
	UserAgent  string
}

func DefaultConfig

func DefaultConfig() *Config

func (*Config) Apply

func (c *Config) Apply(opts []ConfigOpt)

type ConfigOpt

type ConfigOpt func(config *Config)

func WithHTTPClient

func WithHTTPClient(httpClient *http.Client) ConfigOpt

func WithLogger

func WithLogger(logger *slog.Logger) ConfigOpt

func WithURL

func WithURL(url string) ConfigOpt

func WithUserAgent

func WithUserAgent(userAgent string) ConfigOpt

type RequestConfig

type RequestConfig struct {
	Request *http.Request
	Ctx     context.Context
}

func DefaultRequestConfig

func DefaultRequestConfig(req *http.Request) *RequestConfig

func (*RequestConfig) Apply

func (c *RequestConfig) Apply(opts []RequestOpt)

type RequestOpt

type RequestOpt func(config *RequestConfig)

func WithHeader

func WithHeader(key string, value string) RequestOpt

func WithQueryParam

func WithQueryParam(param string, value any) RequestOpt

func WithToken

func WithToken(token string) RequestOpt

type Rest

type Rest interface {
	SelfUser(opts ...RequestOpt) (squarecloud.User, error)
	UserSnapshots(snapshotType string, opts ...RequestOpt) ([]squarecloud.Snapshot, error)

	Applications
}

func New

func New(client Client) Rest

type RestError

type RestError error
var (
	ErrAppNotFound   RestError = errors.New("application not found, verify your application ID and try again")
	ErrAccessDenied  RestError = errors.New("your access is denied, make login with your api token using \"squarecloud login\" or verify if you have access for this action")
	ErrUserNotFound  RestError = errors.New("user not found, verify your user ID and try again")
	ErrInvalidBuffer RestError = errors.New("unable to send buffer")
	ErrInvalidFile   RestError = errors.New("unable to send the file")
	ErrCommitError   RestError = errors.New("unable to commit to your application")
	ErrDelayNow      RestError = errors.New("you are in rate limit, try again later")
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL