README

go-writeas

godoc

Official Write.as Go client library.

Installation

go get go.code.as/writeas.v1

Documentation

See all functionality and usages in the API documentation.

Example usage
import "go.code.as/writeas.v1"

func main() {
	// Create the client
	c := writeas.NewClient()

	// Publish a post
	p, err := c.CreatePost(&writeas.PostParams{
		Title:   "Title!",
		Content: "This is a post.",
		Font:    "sans",
	})
	if err != nil {
		// Perhaps show err.Error()
	}

	// Save token for later, since it won't ever be returned again
	token := p.Token

	// Update a published post
	p, err = c.UpdatePost(&writeas.PostParams{
		OwnedPostParams: writeas.OwnedPostParams{
			ID:    p.ID,
			Token: token,
		},
		Content: "Now it's been updated!",
	})
	if err != nil {
		// handle
	}

	// Get a published post
	p, err = c.GetPost(p.ID)
	if err != nil {
		// handle
	}

	// Delete a post
	err = c.DeletePost(&writeas.PostParams{
		OwnedPostParams: writeas.OwnedPostParams{
			ID:    p.ID,
			Token: token,
		},
	})
}

Contributing

The library covers our usage, but might not be comprehensive of the API. So we always welcome contributions and improvements from the community. Before sending pull requests, make sure you've done the following:

  • Run go fmt on all updated .go files.
  • Document all exported structs and funcs.

License

MIT

Documentation

Overview

    Package writeas provides the binding for the Write.as API

    Index

    Examples

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type AuthUser

    type AuthUser struct {
    	AccessToken string `json:"access_token,omitempty"`
    	Password    string `json:"password,omitempty"`
    	User        *User  `json:"user"`
    }

      AuthUser represents a just-authenticated user. It contains information that'll only be returned once (now) per user session.

      type ClaimPostResult

      type ClaimPostResult struct {
      	ID           string `json:"id,omitempty"`
      	Code         int    `json:"code,omitempty"`
      	ErrorMessage string `json:"error_msg,omitempty"`
      	Post         *Post  `json:"post,omitempty"`
      }

        ClaimPostResult contains the post-specific result for a request to associate a post to an account.

        type Client

        type Client struct {
        
        	// UserAgent overrides the default User-Agent header
        	UserAgent string
        	// contains filtered or unexported fields
        }

          Client is used to interact with the Write.as API. It can be used to make authenticated or unauthenticated calls.

          func NewClient

          func NewClient() *Client

            NewClient creates a new API client. By default, all requests are made unauthenticated. To optionally make authenticated requests, call `SetToken`.

            c := writeas.NewClient()
            c.SetToken("00000000-0000-0000-0000-000000000000")
            

            func NewDevClient

            func NewDevClient() *Client

              NewDevClient creates a new API client for development and testing. It'll communicate with our development servers, and SHOULD NOT be used in production.

              func NewTorClient

              func NewTorClient(port int) *Client

                NewTorClient creates a new API client for communicating with the Write.as Tor hidden service, using the given port to connect to the local SOCKS proxy.

                func (*Client) ClaimPosts

                func (c *Client) ClaimPosts(sp *[]OwnedPostParams) (*[]ClaimPostResult, error)

                  ClaimPosts associates anonymous posts with a user / account. https://developer.write.as/docs/api/#claim-posts.

                  func (*Client) CreateCollection

                  func (c *Client) CreateCollection(sp *CollectionParams) (*Collection, error)

                    CreateCollection creates a new collection, returning a user-friendly error if one comes up. Requires a Write.as subscription. See https://developer.write.as/docs/api/#create-a-collection

                    func (*Client) CreatePost

                    func (c *Client) CreatePost(sp *PostParams) (*Post, error)

                      CreatePost publishes a new post, returning a user-friendly error if one comes up. See https://developer.write.as/docs/api/#publish-a-post.

                      Example
                      Output:
                      
                      This is a post.
                      

                      func (*Client) DeletePost

                      func (c *Client) DeletePost(sp *PostParams) error

                        DeletePost permanently deletes a published post. See https://developer.write.as/docs/api/#delete-a-post.

                        func (*Client) GetCollection

                        func (c *Client) GetCollection(alias string) (*Collection, error)

                          GetCollection retrieves a collection, returning the Collection and any error (in user-friendly form) that occurs. See https://developer.write.as/docs/api/#retrieve-a-collection

                          Example
                          Output:
                          
                          write.as
                          

                          func (*Client) GetCollectionPosts

                          func (c *Client) GetCollectionPosts(alias string) (*[]Post, error)

                            GetCollectionPosts retrieves a collection's posts, returning the Posts and any error (in user-friendly form) that occurs. See https://developer.write.as/docs/api/#retrieve-collection-posts

                            func (*Client) GetPost

                            func (c *Client) GetPost(id string) (*Post, error)

                              GetPost retrieves a published post, returning the Post and any error (in user-friendly form) that occurs. See https://developer.write.as/docs/api/#retrieve-a-post.

                              func (*Client) LogIn

                              func (c *Client) LogIn(username, pass string) (*AuthUser, error)

                                LogIn authenticates a user with Write.as. See https://developer.write.as/docs/api/#authenticate-a-user

                                func (*Client) SetToken

                                func (c *Client) SetToken(token string)

                                  SetToken sets the user token for all future Client requests. Setting this to an empty string will change back to unauthenticated requests.

                                  func (*Client) UpdatePost

                                  func (c *Client) UpdatePost(sp *PostParams) (*Post, error)

                                    UpdatePost updates a published post with the given PostParams. See https://developer.write.as/docs/api/#update-a-post.

                                    type Collection

                                    type Collection struct {
                                    	Alias       string `json:"alias"`
                                    	Title       string `json:"title"`
                                    	Description string `json:"description"`
                                    	StyleSheet  string `json:"style_sheet"`
                                    	Private     bool   `json:"private"`
                                    	Views       int64  `json:"views"`
                                    	Domain      string `json:"domain,omitempty"`
                                    	Email       string `json:"email,omitempty"`
                                    
                                    	TotalPosts int `json:"total_posts"`
                                    
                                    	Posts *[]Post `json:"posts,omitempty"`
                                    }

                                      Collection represents a collection of posts. Blogs are a type of collection on Write.as.

                                      type CollectionParams

                                      type CollectionParams struct {
                                      	Alias string `json:"alias"`
                                      	Title string `json:"title"`
                                      }

                                        CollectionParams holds values for creating a collection.

                                        type OwnedPostParams

                                        type OwnedPostParams struct {
                                        	ID    string `json:"-"`
                                        	Token string `json:"token,omitempty"`
                                        }

                                          OwnedPostParams are, together, fields only the original post author knows.

                                          type Post

                                          type Post struct {
                                          	ID        string    `json:"id"`
                                          	Slug      string    `json:"slug"`
                                          	Token     string    `json:"token"`
                                          	Font      string    `json:"appearance"`
                                          	Language  *string   `json:"language"`
                                          	RTL       *bool     `json:"rtl"`
                                          	Listed    bool      `json:"listed"`
                                          	Created   time.Time `json:"created"`
                                          	Title     string    `json:"title"`
                                          	Content   string    `json:"body"`
                                          	Views     int64     `json:"views"`
                                          	Tags      []string  `json:"tags"`
                                          	Images    []string  `json:"images"`
                                          	OwnerName string    `json:"owner,omitempty"`
                                          
                                          	Collection *Collection `json:"collection,omitempty"`
                                          }

                                            Post represents a published Write.as post, whether anonymous, owned by a user, or part of a collection.

                                            type PostParams

                                            type PostParams struct {
                                            	// Parameters only for updating
                                            	OwnedPostParams
                                            
                                            	// Parameters for creating or updating
                                            	Title    string  `json:"title,omitempty"`
                                            	Content  string  `json:"body,omitempty"`
                                            	Font     string  `json:"font,omitempty"`
                                            	IsRTL    *bool   `json:"rtl,omitempty"`
                                            	Language *string `json:"lang,omitempty"`
                                            
                                            	// Parameters only for creating
                                            	Crosspost []map[string]string `json:"crosspost,omitempty"`
                                            
                                            	// Parameters for collection posts
                                            	Collection string `json:"-"`
                                            }

                                              PostParams holds values for creating or updating a post.

                                              type User

                                              type User struct {
                                              	Username string    `json:"username"`
                                              	Email    string    `json:"email"`
                                              	Created  time.Time `json:"created"`
                                              
                                              	// Optional properties
                                              	Subscription *UserSubscription `json:"subscription"`
                                              }

                                                User represents a registered Write.as user.

                                                type UserSubscription

                                                type UserSubscription struct {
                                                	Name       string    `json:"name"`
                                                	Begin      time.Time `json:"begin"`
                                                	End        time.Time `json:"end"`
                                                	AutoRenew  bool      `json:"auto_renew"`
                                                	Active     bool      `json:"is_active"`
                                                	Delinquent bool      `json:"is_delinquent"`
                                                }

                                                  UserSubscription contains information about a user's Write.as subscription.