Documentation
¶
Overview ¶
Package writeas provides the binding for the Write.as API
Index ¶
- Constants
- type AuthUser
- type Author
- type AuthorParams
- type BatchPostResult
- type BodyResponse
- type Category
- type ClaimPostResult
- type Client
- func (c *Client) BaseURL() string
- func (c *Client) ClaimPosts(sp *[]OwnedPostParams) (*[]ClaimPostResult, error)
- func (c *Client) CreateCollection(sp *CollectionParams) (*Collection, error)
- func (c *Client) CreateContributor(sp *AuthorParams) (*Author, error)
- func (c *Client) CreatePost(sp *PostParams) (*Post, error)
- func (c *Client) DeleteCollection(alias string) error
- func (c *Client) DeletePost(id, token string) error
- func (c *Client) GetCollection(alias string) (*Collection, error)
- func (c *Client) GetCollectionPost(alias, slug string) (*Post, error)
- func (c *Client) GetCollectionPosts(alias string) (*[]Post, error)
- func (c *Client) GetMe(verbose bool) (*User, error)
- func (c *Client) GetPost(id string) (*Post, error)
- func (c *Client) GetUserCollections() (*[]Collection, error)
- func (c *Client) GetUserPosts() (*[]Post, error)
- func (c *Client) LogIn(username, pass string) (*AuthUser, error)
- func (c *Client) LogOut() error
- func (c *Client) Markdown(body, collectionURL string) (string, error)
- func (c *Client) PinPost(alias string, pp *PinnedPostParams) error
- func (c *Client) SetApplicationKey(key string)
- func (c *Client) SetClient(cl *http.Client)
- func (c *Client) SetToken(token string)
- func (c *Client) Token() string
- func (c *Client) UnpinPost(alias string, pp *PinnedPostParams) error
- func (c *Client) UpdatePost(id, token string, sp *PostParams) (*Post, error)
- type Collection
- type CollectionParams
- type Config
- type OrgMember
- type OrgMemberParams
- type OwnedPostParams
- type PinnedPostParams
- type Post
- type PostParams
- type PostType
- type Role
- type User
- type UserSubscription
Examples ¶
Constants ¶
const ( TypePost PostType = "post" TypePrompt = "prompt" TypePromptArchive = "prompt-arch" TypeSubmission = "submission" TypeSubmissionDraft = "submission-draft" )
const (
// Current go-writeas version
Version = "2"
)
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 AuthorParams ¶ added in v2.1.0
type AuthorParams struct { // Name is the public display name of the Author. Name string `json:"name"` // Slug is the optional slug for the Author. Slug string `json:"slug"` // OrgAlias is the alias of the organization the Author belongs to. OrgAlias string `json:"-"` }
AuthorParams are used to create or update a Write.as author.
type BatchPostResult ¶
type BatchPostResult struct { ID string `json:"id,omitempty"` Code int `json:"code,omitempty"` ErrorMessage string `json:"error_msg,omitempty"` }
BatchPostResult contains the post-specific result as part of a larger batch operation.
type BodyResponse ¶ added in v2.0.3
type BodyResponse struct {
Body string `json:"body"`
}
type Category ¶ added in v2.1.0
type Category struct { Hashtag string `json:"hashtag"` Slug string `json:"slug"` Title string `json:"title"` }
Category represents a post tag with additional metadata, like a title and slug.
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 NewClientWith ¶
NewClientWith builds a new API client with the provided configuration.
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 ¶
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) BaseURL ¶ added in v2.1.0
BaseURL returns the base API URL the Client will make calls against.
func (*Client) ClaimPosts ¶
func (c *Client) ClaimPosts(sp *[]OwnedPostParams) (*[]ClaimPostResult, error)
ClaimPosts associates anonymous posts with a user / account. https://developers.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://developers.write.as/docs/api/#create-a-collection
func (*Client) CreateContributor ¶ added in v2.1.0
func (c *Client) CreateContributor(sp *AuthorParams) (*Author, error)
CreateContributor creates a new contributor on the given organization.
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://developers.write.as/docs/api/#publish-a-post.
Example ¶
dwac := NewDevClient() // Publish a post p, err := dwac.CreatePost(&PostParams{ Title: "Title!", Content: "This is a post.", Font: "sans", }) if err != nil { fmt.Printf("Unable to create: %v", err) return } fmt.Printf("%s", p.Content)
Output: This is a post.
func (*Client) DeleteCollection ¶
DeleteCollection permanently deletes a collection and makes any posts on it anonymous.
See https://developers.write.as/docs/api/#delete-a-collection.
func (*Client) DeletePost ¶
DeletePost permanently deletes a published post. See https://developers.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://developers.write.as/docs/api/#retrieve-a-collection
func (*Client) GetCollectionPost ¶
GetCollectionPost retrieves a post from a collection and any error (in user-friendly form) that occurs). See https://developers.write.as/docs/api/#retrieve-a-collection-post
func (*Client) GetCollectionPosts ¶
GetCollectionPosts retrieves a collection's posts, returning the Posts and any error (in user-friendly form) that occurs. See https://developers.write.as/docs/api/#retrieve-collection-posts
func (*Client) GetMe ¶ added in v2.1.0
GetMe retrieves the authenticated User's information. See: https://developers.write.as/docs/api/#retrieve-authenticated-user
func (*Client) GetPost ¶
GetPost retrieves a published post, returning the Post and any error (in user-friendly form) that occurs. See https://developers.write.as/docs/api/#retrieve-a-post.
func (*Client) GetUserCollections ¶
func (c *Client) GetUserCollections() (*[]Collection, error)
GetUserCollections retrieves the authenticated user's collections. See https://developers.write.as/docs/api/#retrieve-user-39-s-collections
func (*Client) GetUserPosts ¶
GetUserPosts retrieves the authenticated user's posts. See https://developers.write.as/docs/api/#retrieve-user-39-s-posts
func (*Client) LogIn ¶
LogIn authenticates a user with Write.as. See https://developers.write.as/docs/api/#authenticate-a-user
func (*Client) LogOut ¶
LogOut logs the current user out, making the Client's current access token invalid.
func (*Client) Markdown ¶ added in v2.0.3
Markdown takes raw Markdown and renders it into usable HTML. See https://developers.write.as/docs/api/#render-markdown.
func (*Client) PinPost ¶
func (c *Client) PinPost(alias string, pp *PinnedPostParams) error
PinPost pins a post in the given collection. See https://developers.write.as/docs/api/#pin-a-post-to-a-collection
func (*Client) SetApplicationKey ¶ added in v2.1.0
SetApplicationKey sets an application-level API key for all Client requests.
func (*Client) SetClient ¶ added in v2.1.0
SetClient sets a custom http.Client to use instead of the default.
func (*Client) SetToken ¶
SetToken sets the user token for all future Client requests. Setting this to an empty string will change back to unauthenticated requests.
func (*Client) UnpinPost ¶
func (c *Client) UnpinPost(alias string, pp *PinnedPostParams) error
UnpinPost unpins a post from the given collection. See https://developers.write.as/docs/api/#unpin-a-post-from-a-collection
func (*Client) UpdatePost ¶
func (c *Client) UpdatePost(id, token string, sp *PostParams) (*Post, error)
UpdatePost updates a published post with the given PostParams. See https://developers.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"` URL string `json:"url,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"` Description string `json:"description,omitempty"` }
CollectionParams holds values for creating a collection.
type Config ¶
type Config struct { // URL of the Write.as API service. Defaults to https://write.as/api. URL string // If specified, the API client will communicate with the Write.as Tor // hidden service using the provided port to connect to the local SOCKS // proxy. TorPort int // If specified, requests will be authenticated using this user token. // This may be provided after making a few anonymous requests with // SetToken. Token string }
Config configures a Write.as client.
type OrgMemberParams ¶ added in v2.1.0
type OrgMemberParams struct { AuthorParams Username string `json:"username"` Email string `json:"email"` Role Role `json:"role"` }
OrgMemberParams are parameters for creating or updating an OrgMember.
type OwnedPostParams ¶
OwnedPostParams are, together, fields only the original post author knows.
type PinnedPostParams ¶
PinnedPostParams holds values for pinning a post
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"` Type PostType `json:"type"` Created time.Time `json:"created"` Updated time.Time `json:"updated"` 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 ID string `json:"-"` Token string `json:"token,omitempty"` // Parameters for creating or updating Slug string `json:"slug"` Created *time.Time `json:"created,omitempty"` Updated *time.Time `json:"updated,omitempty"` 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"` AuthorSlug *string `json:"author,omitempty"` Categories []Category `json:"categories,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.