cloudcraft

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: May 22, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

README

cloudcraft-go

Go Documentation Go Report Card

Cloudcraft diagram

Visualize your cloud architecture with Cloudcraft by Datadog, the best way to create smart AWS and Azure diagrams.

Cloudcraft supports both manual and programmatic diagramming, as well as automatic reverse engineering of existing cloud environments into beautiful system architecture diagrams.

This cloudcraft-go package provides an easy-to-use native Go SDK for interacting with the Cloudcraft API.

Use case examples:

  • Snapshot and visually compare your live AWS or Azure environment before and after a deployment, in your app or as part of your automated CI pipeline
  • Download an inventory of all your cloud resources from a linked account as JSON
  • Write a converter from a third party data format to Cloudcraft diagrams
  • Backup, export & import your Cloudcraft data
  • Programmatically create Cloudcraft diagrams

This SDK requires a Cloudcraft API key to use. A free trial of Cloudcraft Pro with API access is available.

Installation

To install cloudcraft-go, run:

go get github.com/DataDog/cloudcraft-go

Go SDK Documentation

Usage details and more examples, please see the Go reference documentation.

Example Usage

In the below example the Cloudcraft API key is read from the CLOUDCRAFT_API_KEY environment variable. Alternatively, pass in the key to the configuration directly.

package main

import (
	"context"
	"log"
	"os"

	"github.com/DataDog/cloudcraft-go"
)

func main() {
	key, ok := os.LookupEnv("CLOUDCRAFT_API_KEY")
	if !ok {
		log.Fatal("missing env var: CLOUDCRAFT_API_KEY")
	}

	// Create new Config to be initialize a Client.
	cfg := cloudcraft.NewConfig(key)

	// Create a new Client instance with the given Config.
	client, err := cloudcraft.NewClient(cfg)
	if err != nil {
		log.Fatal(err)
	}

	// List all blueprints in an account.
	blueprints, _, err := client.Blueprint.List(context.Background())
	if err != nil {
		log.Fatal(err)
	}

	// Print the name of each blueprint.
	for _, blueprint := range blueprints {
		log.Println(blueprint.Name)
	}
}

More examples can be found the examples directory.

Contributing

Anyone can help make cloudcraft-go better. Check out the contribution guidelines for more information.


Released under the Apache-2.0 License.

Documentation

Overview

Package cloudcraft provides a Go SDK for rendering AWS and Azure diagrams using the Cloudcraft API.

Index

Constants

View Source
const (
	// DefaultSnapshotFormat is the default format used for account snapshots.
	DefaultSnapshotFormat string = "png"

	// DefaultSnapshotWidth is the default width used for account snapshots.
	DefaultSnapshotWidth int = 1920

	// DefaultSnapshotHeight is the default height used for account snapshots.
	DefaultSnapshotHeight int = 1080
)
View Source
const (
	// ErrEmptyApplicationID is returned when an Azure account is created with
	// an empty application ID.
	ErrEmptyApplicationID xerrors.Error = "field 'ApplicationID' cannot be empty"

	// ErrEmptyDirectoryID is returned when an Azure account is created with
	// an empty directory ID.
	ErrEmptyDirectoryID xerrors.Error = "field 'DirectoryID' cannot be empty"

	// ErrEmptySubscriptionID is returned when an Azure account is created with
	// an empty subscription ID.
	ErrEmptySubscriptionID xerrors.Error = "field 'SubscriptionID' cannot be empty"

	// ErrEmptyClientSecret is returned when an Azure account is created with
	// an empty client secret.
	ErrEmptyClientSecret xerrors.Error = "field 'ClientSecret' cannot be empty"
)
View Source
const (
	// ErrNilBlueprint is returned when you try to send a request without a
	// blueprint.
	ErrNilBlueprint xerrors.Error = "blueprint cannot be nil"

	// ErrBlueprintKey is returned when the response from the API does to a List
	// call is not a list of blueprints.
	ErrBlueprintKey xerrors.Error = "key 'blueprints' not found in the response"

	// ErrMissingID is returned when you try to send a request without the ID of
	// a blueprint.
	ErrMissingBlueprintID xerrors.Error = "missing blueprint ID"
)
View Source
const (
	// DefaultImageExportFormat is the default format used to export blueprint
	// images.
	DefaultImageExportFormat string = "png"

	// DefaultImageExportWidth is the default width used to export blueprint
	// images.
	DefaultImageExportWidth int = 1920

	// DefaultImageExportHeight is the default height used to export blueprint
	// images.
	DefaultImageExportHeight int = 1080

	// DefaultBudgetExportFormat is the default format used to export a
	// blueprint's budget.
	DefaultBudgetExportFormat string = "csv"

	// DefaultBudgetExportCurrency is the default currency used to export a
	// blueprint's budget.
	DefaultBudgetExportCurrency string = "USD"

	// DefaultBudgetExportPeriod is the default period used to export a blueprint's
	// budget.
	DefaultBudgetExportPeriod string = "m"
)
View Source
const (
	// ErrInvalidConfig is returned when a Client is created with an invalid
	// Config.
	ErrInvalidConfig xerrors.Error = "invalid config"

	// ErrRequestFailed is returned when a request to the Cloudcraft API fails
	// for unknown reasons.
	ErrRequestFailed xerrors.Error = "request failed with status code"

	// ErrMaxRetriesExceeded is returned when the maximum number of retries is
	// exceeded for HTTP requests.
	ErrMaxRetriesExceeded xerrors.Error = "maximum number of retries exceeded"
)
View Source
const (
	// ErrInvalidEndpoint is returned when the endpoint is not a valid URL.
	ErrInvalidEndpoint xerrors.Error = "invalid endpoint"

	// ErrMissingEndpointScheme is returned when a Config is created without a
	// scheme for the endpoint.
	ErrMissingEndpointScheme xerrors.Error = "missing endpoint scheme"

	// ErrMissingEndpointHost is returned when a Config is created without a
	// host for the endpoint.
	ErrMissingEndpointHost xerrors.Error = "missing endpoint host"

	// ErrMissingKey is returned when a Config is created without an API key.
	ErrMissingKey xerrors.Error = "missing API key"

	// ErrInvalidKey is returned when a Config is created with an invalid API
	// key.
	ErrInvalidKey xerrors.Error = "invalid API key; length must be 44"
)
View Source
const (
	// DefaultSceme is the default protocol scheme, such as "http" or "https".
	DefaultScheme string = "https"

	// DefaultHost is the default host name or IP address of the Cloudcraft API.
	DefaultHost string = "api.cloudcraft.co"

	// DefaultPort is the default port number of the Cloudcraft API.
	DefaultPort string = "443"

	// DefaultPath is the default path to the Cloudcraft API.
	DefaultPath string = "/"

	// DefaultMaxRetries is the default maximum number of times the client will
	// retry a request if it fails.
	DefaultMaxRetries int = 3

	// DefaultTimeout is the default timeout for requests made by the Cloudcraft
	// API client.
	DefaultTimeout time.Duration = time.Second * 120
)
View Source
const (
	EnvScheme     string = "CLOUDCRAFT_PROTOCOL"
	EnvHost       string = "CLOUDCRAFT_HOST"
	EnvPort       string = "CLOUDCRAFT_PORT"
	EnvPath       string = "CLOUDCRAFT_PATH"
	EnvMaxRetries string = "CLOUDCRAFT_MAX_RETRIES"
	EnvTimeout    string = "CLOUDCRAFT_TIMEOUT"
	EnvAPIKey     string = "CLOUDCRAFT_API_KEY" //nolint:gosec // false positive
)

Environment variables used to configure the Config struct.

View Source
const (
	// ErrNilContext is returned when a nil context is passed to a function.
	ErrNilContext xerrors.Error = "context cannot be nil"

	// ErrNilAccount is returned when a nil account is passed as an argument.
	ErrNilAccount xerrors.Error = "account cannot be nil"

	// ErrAccountsKey is returned when the response from the API to a List call
	// is not a list of AWS or Azure accounts.
	ErrAccountsKey xerrors.Error = "key 'accounts' not found in response"

	// ErrEmptyAccountName is returned when an empty account name is passed as
	// an argument.
	ErrEmptyAccountName xerrors.Error = "account name cannot be empty"

	// ErrMissingAccountID is returned when an empty account ID is passed as an
	// argument.
	ErrEmptyAccountID xerrors.Error = "account ID cannot be empty"

	// ErrEmptyRegion is returned when an empty region is passed as an argument.
	ErrEmptyRegion xerrors.Error = "region cannot be empty"
)
View Source
const (
	// ErrEmptyRoleARN is returned when the AWS account's role ARN is empty.
	ErrEmptyRoleARN xerrors.Error = "role ARN cannot be empty"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AWSAccount

type AWSAccount struct {
	CreatedAt   time.Time `json:"createdAt,omitempty"`
	UpdatedAt   time.Time `json:"updatedAt,omitempty"`
	ReadAccess  *[]string `json:"readAccess,omitempty"`
	WriteAccess *[]string `json:"writeAccess,omitempty"`
	ID          string    `json:"id,omitempty"`
	Name        string    `json:"name,omitempty"`
	RoleARN     string    `json:"roleArn,omitempty"`
	ExternalID  string    `json:"externalId,omitempty"`
	CreatorID   string    `json:"CreatorId,omitempty"`
	Source      string    `json:"source,omitempty"`
}

AWSAccount represents an AWS account registered with Cloudcraft.

type AWSService

type AWSService service

AWSService handles communication with the "/aws" endpoint of Cloudcraft's developer API.

func (*AWSService) Create

func (s *AWSService) Create(ctx context.Context, account *AWSAccount) (*AWSAccount, *Response, error)

Create registers a new AWS account with Cloudcraft.

API reference.

func (*AWSService) Delete

func (s *AWSService) Delete(ctx context.Context, id string) (*Response, error)

Delete deletes a registered AWS account from Cloudcraft by ID.

API reference.

func (*AWSService) IAMParameters

func (s *AWSService) IAMParameters(ctx context.Context) (*IAMParams, *Response, error)

IAMParameters list all parameters required for registering a new IAM Role in AWS for use with Cloudcraft.

API reference.

func (*AWSService) IAMPolicy

func (s *AWSService) IAMPolicy(ctx context.Context) (*IAMPolicy, *Response, error)

IAMPolicy lists all permissions required for registering a new IAM Role in AWS for use with Cloudcraft.

API reference.

func (*AWSService) List

func (s *AWSService) List(ctx context.Context) ([]*AWSAccount, *Response, error)

List lists your AWS accounts linked with Cloudcraft.

API reference.

func (*AWSService) Snapshot

func (s *AWSService) Snapshot(
	ctx context.Context,
	id, region, format string,
	params *SnapshotParams,
) ([]byte, *Response, error)

Snapshot scans and render a region of an AWS account into a blueprint in JSON, SVG, PNG, PDF or MxGraph format.

API reference.

func (*AWSService) Update

func (s *AWSService) Update(ctx context.Context, account *AWSAccount) (*Response, error)

Update updates an AWS account registered in Cloudcraft.

API reference.

type AzureAccount

type AzureAccount struct {
	CreatedAt      time.Time `json:"createdAt,omitempty"`
	UpdatedAt      time.Time `json:"updatedAt,omitempty"`
	ReadAccess     *[]string `json:"readAccess,omitempty"`
	WriteAccess    *[]string `json:"writeAccess,omitempty"`
	CustomerID     *string   `json:"CustomerId,omitempty"`
	ID             string    `json:"id,omitempty"`
	Name           string    `json:"name,omitempty"`
	ApplicationID  string    `json:"applicationId,omitempty"`
	DirectoryID    string    `json:"directoryId,omitempty"`
	SubscriptionID string    `json:"subscriptionId,omitempty"`
	ClientSecret   string    `json:"clientSecret,omitempty"`
	CreatorID      string    `json:"CreatorId,omitempty"`
	Hint           string    `json:"hint,omitempty"`
	Source         string    `json:"source,omitempty"`
}

AzureAccount represents an Azure account registered with Cloudcraft.

type AzureService

type AzureService service

AzureService handles communication with the "/azure" endpoint of Cloudcraft's developer API.

func (*AzureService) Create

func (s *AzureService) Create(ctx context.Context, account *AzureAccount) (*AzureAccount, *Response, error)

Create registers a new Azure account with Cloudcraft.

API reference.

func (*AzureService) Delete

func (s *AzureService) Delete(ctx context.Context, id string) (*Response, error)

Delete deletes a registered AWS account from Cloudcraft by ID.

API reference.

func (*AzureService) List

func (s *AzureService) List(ctx context.Context) ([]*AzureAccount, *Response, error)

List returns a list of Azure accounts linked with Cloudcraft.

API reference.

func (*AzureService) Snapshot

func (s *AzureService) Snapshot(
	ctx context.Context,
	id, region, format string,
	params *SnapshotParams,
) ([]byte, *Response, error)

Snapshot scans and render a region of an Azure account into a blueprint in JSON, SVG, PNG, PDF or MxGraph format.

API reference.

func (*AzureService) Update

func (s *AzureService) Update(ctx context.Context, account *AzureAccount) (*Response, error)

Update updates an AWS account registered in Cloudcraft.

API reference.

type Blueprint

type Blueprint struct {
	CustomerID       *string        `json:"CustomerId,omitempty"`
	ReadAccess       *[]string      `json:"readAccess,omitempty"`
	WriteAccess      *[]string      `json:"writeAccess,omitempty"`
	Tags             *[]string      `json:"tags,omitempty"`
	Data             *BlueprintData `json:"data,omitempty"`
	CreatedAt        time.Time      `json:"createdAt,omitempty"`
	UpdatedAt        time.Time      `json:"updatedAt,omitempty"`
	ID               string         `json:"id,omitempty"`
	Name             string         `json:"name,omitempty"`
	CreatorID        string         `json:"CreatorId,omitempty"`
	CurrentVersionID string         `json:"CurrentVersionId,omitempty"`
	LastUserID       string         `json:"LastUserId,omitempty"`
}

Blueprint represents a blueprint in Cloudcraft.

type BlueprintData

type BlueprintData struct {
	LiveAccount    *LiveAccount     `json:"liveAccount,omitempty"`
	Theme          *Theme           `json:"theme,omitempty"`
	LiveOptions    *LiveOptions     `json:"liveOptions,omitempty"`
	Name           string           `json:"name,omitempty"`
	Projection     string           `json:"projection,omitempty"`
	LinkKey        string           `json:"linkKey,omitempty"`
	Grid           string           `json:"grid,omitempty"`
	Images         []map[string]any `json:"images,omitempty"`
	Groups         []map[string]any `json:"groups,omitempty"`
	Nodes          []map[string]any `json:"nodes,omitempty"`
	Icons          []map[string]any `json:"icons,omitempty"`
	Surfaces       []map[string]any `json:"surfaces,omitempty"`
	Connectors     []map[string]any `json:"connectors,omitempty"`
	Edges          []map[string]any `json:"edges,omitempty"`
	Text           []map[string]any `json:"text,omitempty"`
	DisabledLayers []string         `json:"disabledLayers,omitempty"`
	Version        int              `json:"version,omitempty"`
	ShareDocs      bool             `json:"shareDocs,omitempty"`
}

BlueprintData represents a collection of data that makes up a blueprint.

type BlueprintService

type BlueprintService service

BlueprintService handles communication with the "/blueprint" endpoint of Cloudcraft's developer API.

func (*BlueprintService) Create

func (s *BlueprintService) Create(ctx context.Context, blueprint *Blueprint) (*Blueprint, *Response, error)

Create creates a new blueprint.

API reference.

func (*BlueprintService) Delete

func (s *BlueprintService) Delete(ctx context.Context, id string) (*Response, error)

Delete deletes a blueprint by ID.

API reference.

func (*BlueprintService) ExportBudget

func (s *BlueprintService) ExportBudget(
	ctx context.Context,
	id string,
	format string,
	params *BudgetExportParams,
) ([]byte, *Response, error)

ExportBudget exports a blueprint's budget in CSV or XLSX format.

API reference.

func (*BlueprintService) ExportImage

func (s *BlueprintService) ExportImage(
	ctx context.Context,
	id string,
	format string,
	params *ImageExportParams,
) ([]byte, *Response, error)

ExportImage renders a blueprint for export in SVG, PNG, PDF or MxGraph format.

API reference.

func (*BlueprintService) Get

Get retrieves a blueprint by its ID.

API reference.

func (*BlueprintService) List

func (s *BlueprintService) List(ctx context.Context) ([]*Blueprint, *Response, error)

List returns a list of blueprints.

API Reference.

func (*BlueprintService) Update

func (s *BlueprintService) Update(ctx context.Context, blueprint *Blueprint, etag string) (*Response, error)

Update updates an existing blueprint.

API reference.

type BudgetExportParams

type BudgetExportParams struct {
	Currency string
	Period   string
	Rate     string
}

BudgetExportParams represents optional query parameters that can be used to customize an a budget export.

type Client

type Client struct {

	// Cloudcraft API service fields.
	Azure     *AzureService
	AWS       *AWSService
	Blueprint *BlueprintService
	Team      *TeamService
	User      *UserService
	// contains filtered or unexported fields
}

Client is a client for the Cloudcraft API.

func NewClient

func NewClient(cfg *Config) (*Client, error)

NewClient returns a new Client given a Config. If Config is nil, NewClient will try to look up the configuration from the environment.

type Config

type Config struct {

	// Scheme is the protocol scheme, such as "http" or "https", to use when
	// calling the API.
	//
	// If not set, the value of the CLOUDCRAFT_PROTOCOL environment variable is
	// used. If the environment variable is not set, the default value is
	// "https".
	//
	// This field is optional.
	Scheme string

	// Host is the host name or IP address of the Cloudcraft API.
	//
	// If not set, the value of the CLOUDCRAFT_HOST environment variable is
	// used. If the environment variable is not set, the default value is the
	// public instance of Cloudcraft, "api.cloudcraft.co".
	//
	// This field is optional.
	Host string

	// Port is the port number of the Cloudcraft API.
	//
	// If not set, the value of the CLOUDCRAFT_PORT environment variable is
	// used. If the environment variable is not set, the default value is "443".
	//
	// This field is optional.
	Port string

	// Path is the path to the Cloudcraft API.
	//
	// If not set, the value of the CLOUDCRAFT_PATH environment variable is
	// used. If the environment variable is not set, the default value is "/".
	//
	// This field is optional.
	Path string

	// Key is the API key used to authenticate with the Cloudcraft API.
	//
	// This field is required. [Learn more].
	//
	// [Learn more]: https://developers.cloudcraft.co/#authentication
	Key string

	// MaxRetries is the maximum number of times the client will retry a request
	// if it fails.
	//
	// If not set, the value of the CLOUDCRAFT_MAX_RETRIES environment variable
	// is used. If the environment variable is not set, the default value is 3.
	//
	// This field is optional.
	MaxRetries int

	// Timeout is the time limit for requests made by the Cloudcraft API client
	// to the Cloudcraft API.
	//
	// If not set, the value of the CLOUDCRAFT_TIMEOUT environment variable is
	// used. If the environment variable is not set, the default value is 80
	// seconds.
	//
	// This field is optional.
	Timeout time.Duration
	// contains filtered or unexported fields
}

Config holds the basic configuration for the Cloudcraft API.

func NewConfig

func NewConfig(key string) *Config

NewConfig returns a new Config with the given API key.

func NewConfigFromEnv

func NewConfigFromEnv() *Config

NewConfigFromEnv returns a new Config from values set in the environment.

func (*Config) Validate

func (c *Config) Validate() error

Validate checks that the Config is valid.

type IAMParams

type IAMParams struct {
	AccountID     string `json:"accountId,omitempty"`
	ExternalID    string `json:"externalId,omitempty"`
	AWSConsoleURL string `json:"awsConsoleUrl,omitempty"`
}

IAMParams represents the AWS IAM role parameters used by Cloudcraft.

type IAMPolicy

type IAMPolicy struct {
	Version   string         `json:"Version,omitempty"`
	Statement []IAMStatement `json:"Statement,omitempty"`
}

IAMPolicy represents the AWS IAM policy used by Cloudcraft.

type IAMStatement

type IAMStatement struct {
	Action   any    `json:"Action,omitempty"`
	Resource any    `json:"Resource,omitempty"`
	Effect   string `json:"Effect,omitempty"`
}

IAMStatement represents an AWS IAM policy statement.

type ImageExportParams

type ImageExportParams struct {
	PaperSize   string
	Grid        bool
	Transparent bool
	Landscape   bool
	Scale       float32
	Width       int
	Height      int
}

ImageExportParams represents optional query parameters that can be used to customize an image export.

type LiveAccount

type LiveAccount struct {
	ID   string `json:"id,omitempty"`
	Type string `json:"type,omitempty"`
}

LiveAccount represents the AWS account that a blueprint is connected to.

type LiveOptions

type LiveOptions struct {
	ExcludedTypes      []string `json:"excludedTypes,omitempty"`
	AutoLabel          bool     `json:"autoLabel,omitempty"`
	AutoConnect        bool     `json:"autoConnect,omitempty"`
	UpdatesEnabled     bool     `json:"updatesEnabled,omitempty"`
	UpdateAllOnScan    bool     `json:"updateAllOnScan,omitempty"`
	UpdateGroupsOnScan bool     `json:"updateGroupsOnScan,omitempty"`
	UpdateNodeOnSelect bool     `json:"updateNodeOnSelect,omitempty"`
}

LiveOptions represents options for a blueprint's live view.

type Members added in v1.2.0

type Members struct {
	ID         string  `json:"id,omitempty"`
	Role       string  `json:"role,omitempty"`
	UserID     *string `json:"userId,omitempty"`
	Name       *string `json:"name,omitempty"`
	Email      string  `json:"email,omitempty"`
	MFAEnabled bool    `json:"mfaEnabled,omitempty"`
}

Members represents a list of members in a team.

type Response

type Response struct {
	// Header contains the response headers.
	Header http.Header

	// Body contains the response body as a byte slice.
	Body []byte

	// Status is the HTTP status code of the response.
	Status int
}

Response represents a response from the Cloudcraft API.

type SnapshotParams

type SnapshotParams struct {
	PaperSize   string
	Projection  string
	Theme       string
	Filter      []string
	Exclude     []string
	Label       bool
	Autoconnect bool
	Grid        bool
	Transparent bool
	Landscape   bool
	Scale       float32
	Width       int
	Height      int
}

SnapshotParams represents query parameters used to customize an Azure or AWS account snapshot.

type Team added in v1.2.0

type Team struct {
	UpdatedAt           time.Time `json:"updatedAt,omitempty"`
	CreatedAt           time.Time `json:"createdAt,omitempty"`
	ID                  string    `json:"id,omitempty"`
	Name                string    `json:"name,omitempty"`
	CustomerID          string    `json:"customerId,omitempty"`
	Role                string    `json:"role,omitempty"`
	Members             []Members `json:"members,omitempty"`
	Visible             bool      `json:"visible,omitempty"`
	CrossOrganizational bool      `json:"crossOrganizational,omitempty"`
	ExternalSharing     bool      `json:"externalSharing,omitempty"`
}

Team represents a team in Cloudcraft.

type TeamService added in v1.2.0

type TeamService service

TeamService handles communication with the "/team" endpoint of Cloudcraft's developer API.

func (*TeamService) List added in v1.2.0

func (s *TeamService) List(ctx context.Context) ([]*Team, *Response, error)

List returns a list of teams.

API Reference.

type Theme

type Theme struct {
	Base string `json:"base,omitempty"`
}

Theme represents the color scheme of a blueprint.

type User

type User struct {
	AccessedAt time.Time      `json:"accessedAt,omitempty"`
	CreatedAt  time.Time      `json:"createdAt,omitempty"`
	UpdatedAt  time.Time      `json:"updatedAt,omitempty"`
	Settings   map[string]any `json:"settings,omitempty"`
	ID         string         `json:"id,omitempty"`
	Name       string         `json:"name,omitempty"`
	Email      string         `json:"email,omitempty"`
}

User represents a Cloudcraft user.

type UserService

type UserService service

UserService handles communication with the "/user" endpoint of Cloudcraft's developer API.

func (*UserService) Me

func (s *UserService) Me(ctx context.Context) (*User, *Response, error)

Me returns the user profile.

API reference.

Directories

Path Synopsis
examples
internal
endpoint
Package endpoint provides a function to parse fragments of an URL into an *url.URL.
Package endpoint provides a function to parse fragments of an URL into an *url.URL.
meta
Package meta provides build information about the cloudcraft module.
Package meta provides build information about the cloudcraft module.
xerrors
Package xerrors provides helper functions and types for error handling.
Package xerrors provides helper functions and types for error handling.
xhttp
Package xhttp provides utilities and functions for working with HTTP.
Package xhttp provides utilities and functions for working with HTTP.
xos
Package xos provides extensions for Go's standard os package.
Package xos provides extensions for Go's standard os package.
xtesting
Package xtesting provides functions and utilities for testing the Cloudcraft SDK.
Package xtesting provides functions and utilities for testing the Cloudcraft SDK.
tests
integration
Package integration contains live integration tests for Cloudcraft's developer API.
Package integration contains live integration tests for Cloudcraft's developer API.

Jump to

Keyboard shortcuts

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