bitballoon

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: May 30, 2014 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package bitballoon provides a client for using the BitBalloon API.

To work with the BitBalloon API, start by instantiating a client:

client := bitballoon.NewClient(&bitballoon.Config{AccessToken: AccessToken})

// List sites
sites, resp, err := client.Sites.List(&bitballoon.ListOptions{Page: 1})

// Create a new site
site, resp, err := client.Sites.Create(&SiteAttributes{
  Name: "site-subdomain",
  CustomDomain: "www.example.com",
  Password: "secret",
  NotificationEmail: "me@example.com",
})

// Deploy a directory
deploy, resp, err := site.Deploys.Create("/path/to/directory")

// Wait for the deploy to process
err := deploy.WaitForReady(0)

// Get a single site
site, resp, err := client.Sites.Get("my-site-id")

// Set the domain of the site
site.CustomDomain = "www.example.com"

// Update the site
resp, err := site.Update()

// Deploy a new version of the site from a zip file
deploy, resp, err := site.Deploys.Create("/path/to/file.zip")
deploy.WaitForReady(0)

// Delete the site
resp, err := site.Destroy()

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	BaseUrl   *url.URL
	UserAgent string

	Sites   *SitesService
	Deploys *DeploysService
	// contains filtered or unexported fields
}

The BitBalloon Client

func NewClient

func NewClient(config *Config) *Client

NewClient returns a new BitBalloon API client

func (*Client) Request

func (c *Client) Request(method, path string, options *RequestOptions, decodeTo interface{}) (*Response, error)

Request sends an authenticated HTTP request to the BitBalloon API

When error is nil, resp always contains a non-nil Response object

Generally methods on the various services should be used over raw API requests

type Config

type Config struct {
	AccessToken string

	ClientId     string
	ClientSecret string

	BaseUrl   string
	UserAgent string

	HttpClient *http.Client
}

Config is used to configure the BitBalloon client. Typically you'll just want to set an AccessToken

type Deploy

type Deploy struct {
	Id     string `json:"id"`
	SiteId string `json:"site_id"`
	UserId string `json:"user_id"`

	// State of the deploy (uploading/uploaded/processing/ready/error)
	State string `json:"state"`

	// Cause of error if State is "error"
	ErrorMessage string `json:"error_message"`

	// Shas of files that needs to be uploaded before the deploy is ready
	Required []string `json:"required"`

	DeployUrl     string `json:"deploy_url"`
	ScreenshotUrl string `json:"screenshot_url"`

	CreatedAt Timestamp `json:"created_at"`
	UpdatedAt Timestamp `json:"updated_at"`
	// contains filtered or unexported fields
}

Deploy represents a specific deploy of a site

func (*Deploy) Reload

func (deploy *Deploy) Reload() (*Response, error)

Reload a deploy from the API

func (*Deploy) Restore

func (deploy *Deploy) Restore() (*Response, error)

Restore an old deploy. Sets the deploy as the active deploy for a site

func (*Deploy) WaitForReady

func (deploy *Deploy) WaitForReady(timeout time.Duration) error

type DeployInfo

type DeployInfo struct {
	Id       string   `json:"id"`
	DeployId string   `json:"deploy_id"`
	Required []string `json:"required"`
}

Info returned when creating a new deploy

type DeploysService

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

DeploysService is used to access all Deploy related API methods

func (*DeploysService) Create

func (s *DeploysService) Create(dirOrZip string) (*Deploy, *Response, error)

Create a new deploy

Example: site.Deploys.Create("/path/to/site-dir")

func (*DeploysService) Get

func (d *DeploysService) Get(id string) (*Deploy, *Response, error)

Get a specific deploy.

func (*DeploysService) List

func (s *DeploysService) List(options *ListOptions) ([]Deploy, *Response, error)

List all deploys. Takes ListOptions to control pagination.

type ErrorResponse

type ErrorResponse struct {
	Response *http.Response
	Message  string
}

ErrorResponse is returned when a request to the API fails

func (*ErrorResponse) Error

func (r *ErrorResponse) Error() string

type ListOptions

type ListOptions struct {
	Page    int
	PerPage int
}

All List methods takes a ListOptions object controlling pagination

type RequestOptions

type RequestOptions struct {
	JsonBody      interface{}
	RawBody       io.Reader
	RawBodyLength int64
	QueryParams   *url.Values
	Headers       *map[string]string
}

RequestOptions for doing raw requests to the BitBalloon API

type Response

type Response struct {
	*http.Response

	NextPage  int
	PrevPage  int
	FirstPage int
	LastPage  int
}

BitBalloon API Response. All API methods on the different client services will return a Response object. For any list operation this object will hold pagination information

type Site

type Site struct {
	Id     string `json:"id"`
	UserId string `json:"user_id"`

	// These fields can be updated through the API
	Name              string `json:"name"`
	CustomDomain      string `json:"custom_domain"`
	Password          string `json:"password"`
	NotificationEmail string `json:"notification_email"`

	State   string `json:"state"`
	Premium bool   `json:"premium"`
	Claimed bool   `json:"claimed"`

	Url           string `json:"url"`
	AdminUrl      string `json:"admin_url"`
	DeployUrl     string `json:"deploy_url"`
	ScreenshotUrl string `json:"screenshot_url"`

	CreatedAt Timestamp `json:"created_at"`
	UpdatedAt Timestamp `json:"updated_at"`

	// Access deploys for this site
	Deploys *DeploysService
	// contains filtered or unexported fields
}

Site represents a BitBalloon Site

func (*Site) Destroy

func (site *Site) Destroy() (*Response, error)

Destroy deletes a site permanently

func (*Site) Reload

func (site *Site) Reload() (*Response, error)

func (*Site) Update

func (site *Site) Update() (*Response, error)

Update will update the fields that can be updated through the API

type SiteAttributes

type SiteAttributes struct {
	Name              string `json:"name"`
	CustomDomain      string `json:"custom_domain"`
	Password          string `json:"password"`
	NotificationEmail string `json:"notification_email"`
}

Attributes for Sites.Create

type SitesService

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

SitesService is used to access all Site related API methods

func (*SitesService) Create

func (s *SitesService) Create(attributes *SiteAttributes) (*Site, *Response, error)

Create a new empty site.

func (*SitesService) Get

func (s *SitesService) Get(id string) (*Site, *Response, error)

Get a single Site from the API. The id can be either a site Id or the domain of a site (ie. site.Get("mysite.bitballoon.com"))

func (*SitesService) List

func (s *SitesService) List(options *ListOptions) ([]Site, *Response, error)

List all sites you have access to. Takes ListOptions to control pagination.

type Timestamp

type Timestamp struct {
	time.Time
}

Timestamp represents a time that can be unmarshalled from a JSON string formatted as either an RFC3339 or Unix timestamp. This is necessary for some fields since the GitHub API is inconsistent in how it represents times. All exported methods of time.Time can be called on Timestamp.

func (Timestamp) Equal

func (t Timestamp) Equal(u Timestamp) bool

Equal reports whether t and u are equal based on time.Equal

func (Timestamp) String

func (t Timestamp) String() string

func (*Timestamp) UnmarshalJSON

func (t *Timestamp) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON implements the json.Unmarshaler interface. Time is expected in RFC3339 or Unix format.

Jump to

Keyboard shortcuts

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