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, page int) (*[]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 ¶
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 ¶
type BodyResponse struct {
Body string `json:"body"`
}
type Category ¶
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) 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 ¶
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 ¶
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 ¶
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 ¶
SetApplicationKey sets an application-level API key for all Client requests.
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 ¶
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.