cloudflare

package
v1.36.0 Latest Latest
Warning

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

Go to latest
Published: May 17, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package cloudflare provides a focused Cloudflare REST API client for provisioning the resources required by the Orun backend Worker.

It supports D1 database create/list/delete, R2 bucket create/list/delete, Worker script upload with bindings, Worker vars/secrets, and status checks.

Credentials are read from CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID environment variables by default, and can be overridden via Options.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIError

type APIError struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

APIError represents a Cloudflare API error.

func (*APIError) Error

func (e *APIError) Error() string

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is a Cloudflare REST API client.

func New

func New(opts Options) *Client

New creates a new Cloudflare API client.

func (*Client) CreateD1Database

func (c *Client) CreateD1Database(ctx context.Context, name string) (*D1Database, error)

CreateD1Database creates a new D1 database and returns it. If a database with the given name already exists, it is returned without error.

func (*Client) CreateOrUpdateQueueConsumer

func (c *Client) CreateOrUpdateQueueConsumer(ctx context.Context, queueID, scriptName, dlqName string, settings QueueConsumerSettings) error

CreateOrUpdateQueueConsumer idempotently attaches a Worker consumer to a queue. If a consumer for the same script already exists with matching settings, this is a no-op. If it exists with different settings, it is deleted and recreated.

func (*Client) CreateQueue

func (c *Client) CreateQueue(ctx context.Context, name string) (*Queue, error)

CreateQueue creates a new queue idempotently. If a queue with the given name already exists, it is returned.

func (*Client) CreateR2Bucket

func (c *Client) CreateR2Bucket(ctx context.Context, name string) (*R2Bucket, error)

CreateR2Bucket creates a new R2 bucket. If a bucket with the given name already exists, it is returned without error.

func (*Client) DeleteD1Database

func (c *Client) DeleteD1Database(ctx context.Context, databaseUUID string) error

DeleteD1Database deletes a D1 database by UUID.

func (*Client) DeleteQueueByID

func (c *Client) DeleteQueueByID(ctx context.Context, queueID string) error

DeleteQueueByID deletes a queue by its ID. Missing resources are not treated as an error.

func (*Client) DeleteQueueByName

func (c *Client) DeleteQueueByName(ctx context.Context, name string) error

DeleteQueueByName deletes a queue by name. Missing resources are not treated as an error.

func (*Client) DeleteQueueConsumer

func (c *Client) DeleteQueueConsumer(ctx context.Context, queueID, consumerID string) error

DeleteQueueConsumer removes a consumer from a queue. Missing resources are not treated as an error.

func (*Client) DeleteR2Bucket

func (c *Client) DeleteR2Bucket(ctx context.Context, name string) error

DeleteR2Bucket deletes an R2 bucket by name.

func (*Client) DeleteWorkerSchedules

func (c *Client) DeleteWorkerSchedules(ctx context.Context, scriptName string) error

DeleteWorkerSchedules removes all cron schedules for a Worker.

func (*Client) DeleteWorkerScript

func (c *Client) DeleteWorkerScript(ctx context.Context, scriptName string) error

DeleteWorkerScript deletes a Worker script by name.

func (*Client) EnableWorkerSubdomainRoute

func (c *Client) EnableWorkerSubdomainRoute(ctx context.Context, scriptName string) error

EnableWorkerSubdomainRoute enables the workers.dev route for a Worker script.

func (*Client) ExecD1SQL

func (c *Client) ExecD1SQL(ctx context.Context, databaseUUID, sql string) (*D1QueryResult, error)

ExecD1SQL executes a SQL statement against a D1 database.

func (*Client) FindD1DatabaseByName

func (c *Client) FindD1DatabaseByName(ctx context.Context, name string) (*D1Database, error)

FindD1DatabaseByName returns the D1 database with the given name, or nil if not found.

func (*Client) FindQueueByName

func (c *Client) FindQueueByName(ctx context.Context, name string) (*Queue, error)

FindQueueByName returns the queue with the given name, or nil if not found.

func (*Client) FindR2BucketByName

func (c *Client) FindR2BucketByName(ctx context.Context, name string) (*R2Bucket, error)

FindR2BucketByName returns the R2 bucket with the given name, or nil if not found.

func (*Client) GetWorkerScript

func (c *Client) GetWorkerScript(ctx context.Context, scriptName string) (*WorkerScript, error)

GetWorkerScript returns the Worker script metadata, or nil if it does not exist.

func (*Client) GetWorkerSubdomain

func (c *Client) GetWorkerSubdomain(ctx context.Context) (string, error)

GetWorkerSubdomain returns the workers.dev subdomain for the account, if enabled. Returns empty string if the subdomain is not enabled.

func (*Client) ListD1Databases

func (c *Client) ListD1Databases(ctx context.Context) ([]D1Database, error)

ListD1Databases returns all D1 databases for the account.

func (*Client) ListQueueConsumers

func (c *Client) ListQueueConsumers(ctx context.Context, queueID string) ([]QueueConsumer, error)

ListQueueConsumers returns all consumers attached to a queue.

func (*Client) ListQueues

func (c *Client) ListQueues(ctx context.Context) ([]Queue, error)

ListQueues returns all queues for the account.

func (*Client) ListR2Buckets

func (c *Client) ListR2Buckets(ctx context.Context) ([]R2Bucket, error)

ListR2Buckets returns all R2 buckets for the account.

func (*Client) ListWorkerSchedules

func (c *Client) ListWorkerSchedules(ctx context.Context, scriptName string) ([]WorkerSchedule, error)

ListWorkerSchedules returns the cron schedules for a Worker script.

func (*Client) ListWorkerSecretNames

func (c *Client) ListWorkerSecretNames(ctx context.Context, scriptName string) ([]string, error)

ListWorkerSecretNames returns the names of secrets currently set on a Worker script.

func (*Client) SetWorkerSecret

func (c *Client) SetWorkerSecret(ctx context.Context, scriptName, secretName, secretValue string) error

SetWorkerSecret sets a single Worker secret. The value is never logged.

func (*Client) SetWorkerVars

func (c *Client) SetWorkerVars(ctx context.Context, scriptName string, vars map[string]string) error

SetWorkerVars updates or creates non-secret Worker environment variables. These are sent as part of the script metadata, so the script must already exist.

func (*Client) UpdateWorkerSchedules

func (c *Client) UpdateWorkerSchedules(ctx context.Context, scriptName string, crons []string) error

UpdateWorkerSchedules replaces all cron schedules for a Worker. Pass an empty slice to clear all schedules.

func (*Client) UploadWorkerScript

func (c *Client) UploadWorkerScript(ctx context.Context, params UploadWorkerParams) (*WorkerScript, error)

UploadWorkerScript uploads (creates or updates) a Worker module script with bindings.

type D1Database

type D1Database struct {
	UUID    string `json:"uuid"`
	Name    string `json:"name"`
	Version string `json:"version"`
}

D1Database represents a Cloudflare D1 database.

type D1QueryRequest

type D1QueryRequest struct {
	SQL    string   `json:"sql"`
	Params []string `json:"params,omitempty"`
}

D1QueryRequest is the body for D1 query execution.

type D1QueryResult

type D1QueryResult struct {
	Results []map[string]interface{} `json:"results"`
	Success bool                     `json:"success"`
	Meta    struct {
		Duration float64 `json:"duration"`
	} `json:"meta"`
}

D1QueryResult holds the result of a D1 SQL query.

type DurableObjectMigration

type DurableObjectMigration struct {
	Tag              string   `json:"tag"`
	NewSQLiteClasses []string `json:"new_sqlite_classes,omitempty"`
	NewClasses       []string `json:"new_classes,omitempty"`
}

DurableObjectMigration is a Durable Object class migration declaration.

type Options

type Options struct {
	AccountID  string
	APIToken   string
	BaseURL    string // defaults to https://api.cloudflare.com/client/v4
	UserAgent  string
	HTTPClient *http.Client // injectable for tests
}

Options configures the Cloudflare client.

type Queue

type Queue struct {
	QueueID   string `json:"queue_id"`
	QueueName string `json:"queue_name"`
}

Queue represents a Cloudflare Queue.

type QueueConsumer

type QueueConsumer struct {
	ConsumerID      string                `json:"consumer_id"`
	ScriptName      string                `json:"script_name"`
	DeadLetterQueue string                `json:"dead_letter_queue"`
	Type            string                `json:"type"`
	Settings        QueueConsumerSettings `json:"settings"`
}

QueueConsumer represents a consumer of a Cloudflare Queue.

type QueueConsumerSettings

type QueueConsumerSettings struct {
	BatchSize     int `json:"batch_size,omitempty"`
	MaxRetries    int `json:"max_retries,omitempty"`
	MaxWaitTimeMs int `json:"max_wait_time_ms,omitempty"`
}

QueueConsumerSettings holds the configurable consumer behavior.

type R2Bucket

type R2Bucket struct {
	Name         string `json:"name"`
	CreationDate string `json:"creation_date"`
}

R2Bucket represents a Cloudflare R2 bucket.

type UploadWorkerParams

type UploadWorkerParams struct {
	ScriptName         string
	Bundle             []byte
	Bindings           []WorkerBinding
	DOMiddleMigrations []DurableObjectMigration
	CompatDate         string
}

UploadWorkerParams holds all parameters for uploading a Worker module script.

type WorkerBinding

type WorkerBinding struct {
	Type       string `json:"type"`
	Name       string `json:"name"`
	ScriptName string `json:"script_name,omitempty"`
	ClassName  string `json:"class_name,omitempty"`
	DatabaseID string `json:"id,omitempty"`
	BucketName string `json:"bucket_name,omitempty"`
	QueueName  string `json:"queue_name,omitempty"`
	Text       string `json:"text,omitempty"`
}

WorkerBinding represents a Worker binding declaration.

type WorkerSchedule

type WorkerSchedule struct {
	Cron string `json:"cron"`
}

WorkerSchedule represents a single Worker cron trigger.

type WorkerScript

type WorkerScript struct {
	ID         string   `json:"id"`
	ETAG       string   `json:"etag"`
	Handlers   []string `json:"handlers"`
	ModifiedOn string   `json:"modified_on"`
	CreatedOn  string   `json:"created_on"`
}

WorkerScript represents a deployed Worker script.

Jump to

Keyboard shortcuts

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