This is an unofficial community supported SDK. If you find any issues or have a request please post an issue.
The master branch has no API stability guarantees. You can import the latest stable API with:
import "gopkg.in/inconshreveable/go-keen.v0"
This is the very beginnings of a Keen IO client SDK in Go. Currently, only adding events to collections is supported.
The simplest API is to create a client object and then call AddEvent:
package main
import (
"github.com/inconshreveable/go-keen"
)
type ExampleEvent struct {
UserId int
Amount int
Type string
Tags []string
}
func main() {
keenClient := &keen.Client{ WriteKey: "XXX", ProjectID: "XXX" }
keenClient.AddEvent("collection_name", &ExampleEvent{
UserId: 102,
Amount: 39,
Type: "ball",
Tags: []string{ "red", "bouncy" },
})
}
For production use, it makes more sense to add events to an internal buffer which is flushed to Keen at a regular interval in a single batch upload call. The go-keen library provides a BatchClient which allows you to do just that while keeping the same, simple API for adding events. Do note that it does mean that you could lose events if your program exits or crashes before it flushes the events to Keen.
package main
import (
"github.com/inconshreveable/go-keen"
"time"
)
const keenFlushInterval = 10 * time.Second
type ExampleEvent struct {
UserId int
Amount int
Type string
Tags []string
}
func main() {
keenClient := &keen.Client{ WriteKey: "XXX", ProjectID: "XXX" }
keenBatchClient := keen.NewBatchClient(keenClient, keenFlushInterval)
keenBatchClient.AddEvent("collection_name", &ExampleEvent{
UserId: 102,
Amount: 39,
Type: "ball",
Tags: []string{ "red", "bouncy" },
})
}
Add support for all other Keen IO API endpoints, espeically querying data.