Go
Installing
The SDK is available on Github, so available via the standard go get
go get -u github.com/sailhouse/sdk-goBasic Usage
Importing
The sailhouse package has all the goodness in it.
import (    "github.com/sailhouse/sdk-go/sailhouse")Initialising the Client
The package has a SailhouseClient struct which holds all the methods for interacting with the Sailhouse platform.
Provided you have generated a token, you can create a client easily with sailhouse.NewSailhouseClient(...)
package main
import (    "os"
    "github.com/sailhouse/sdk-go/sailhouse")
func main() {    client := sailhouse.NewSailhouseClient(os.Getenv("SAILHOUSE_TOKEN"))
    // do awesome things 🚀}Sending an event
The client has a Publish(...) method on it for easily sending data to a given topic
data := map[string]interface{}{    "text": "example contents",    "object": map[string]interface{}{        "key": "value",    },}
ctx := context.Background()
err := client.Publish(ctx, "some-topic", data)if err != nil {    panic(err)}The data arg must be able to be marshalled into JSON via json.Marshal. If this fails, it will return an error, and the event will not be sent.
Receiving events from a pull subscription
The client also has a GetEvents(...) method for requesting the events sent to a given subscription for a topic.
type Message struct {  Text string `json:"text"`}
func main() {    ctx := context.Background()    res, err := client.GetEvents(        ctx,        "awesome-example",        "awesome-pull",        sailhouse.WithLimit(20)    )    if err != nil {        panic(err)    }
    for _, event := range res.Events {        var message Message
        // Cast the event data into the `Message` struct        err := event.As(&message)        if err != nil {            panic(err)        }
        fmt.Println(message.Text)
        // Acknowledge the message so that the event is not        // returned again        event.Ack()    }}