ButterCMS Go API Wrapper
This wrapper is meant to enable Go developers to quickly and easily get up and running with ButterCMS. It is based of off the API documentation.
Versioning
Each revision of the binding is tagged and the version is updated accordingly.
It is highly recommended you use go modules
for vendoring/package management, in order to ensure a newer
version of the binding does not affect backwards compatibility.
Installation
go get github.com/buttercms/buttercms-go
Pages
Full list of params
availble in our official API Documentation
params := map[string]string{"foo": "bar"}
ButterCMS.GetPages("news", params)
ButterCMS.GetPage("news", "another-test-page", params)
Collections
Full list of params
availble in our official API Documentation
params := map[string]string{"locale": "en"}
ButterCMS.GetContentFields([]string{"collection_key"}, params)
Blog Engine
// Posts
params := map[string]string{"page": "2"}
ButterCMS.GetPosts(params)
ButterCMS.GetPost("slug")
// Authors
params = map[string]string{"include": "recent_posts"}
ButterCMS.GetAuthors(params)
ButterCMS.GetAuthor("slug", params)
// Categories
ButterCMS.GetCategories(params)
ButterCMS.GetCategory("slug", params)
// Feeds
ButterCMS.GetFeed("rss|atom|sitemap")
// Search
ButterCMS.SearchPosts("query", params)
Usage
To include this package in your Go code, simply use import "ButterCMS"
at the top of your file
Example Usage
package main
import (
"github.com/buttercms/buttercms-go"
"fmt"
"encoding/json"
)
func main() {
ButterCMS.SetAuthToken("<auth_token>")
params := map[string]string{"include": "recent_posts"}
authorResp, err := ButterCMS.GetAuthors(params)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", authorResp)
params = map[string]string{"author_slug": "author-slug"}
postResp, err := ButterCMS.GetPosts(params)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", postResp)
pagesResp, err := ButterCMS.GetPages("news", nil)
if err != nil {
panic(err.Error())
}
fmt.Printf("%d Results\n", pagesResp.MetaData.Count)
for index, page := range pagesResp.PageList {
fmt.Printf("Result %d: %s\n", index, page.Slug)
if (len(page.Fields) > 0) {
fmt.Println("Custom fields:")
for fieldName, fieldValue := range page.Fields {
switch value := fieldValue.(type) {
case string:
fmt.Printf("Field '%1s' has value '%2s'\n", fieldName, value)
default:
fmt.Println("Other type\n")
}
}
}
}
contentParams := map[string]string{}
contentKeys := []string{"somethings"}
contentResp, err := ButterCMS.GetContentFields(contentKeys, contentParams)
if err != nil {
panic(err.Error())
}
j, err := json.Marshal(contentResp)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(j))
}
Other
View these Go Blog engine and Full CMS for other examples of using ButterCMS with Go.