Skip to content

FindHotel/analytics-go

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

analytics-go go-doc Build Status

Segment analytics client for Go.

This is a fork of segmentio/analytics-go library.

Notable changes:

  • Use fully customised endpoint without /v1/batch postfix
  • Use X-API-Key header for authorisation
  • Ability to report usage metrics to DataDog

Latest stable branch is master. Releases are presented on Releases page.

Installation

If you use go modules:

    go get -u github.com/FindHotel/analytics-go@3.7.0 

Documentation

The links bellow should provide all the documentation needed to make the best use of the library and the Segment API:

Usage

package main

import (
    "os"

    analytics "github.com/FindHotel/analytics-go"
)

func main() {
    // Instantiates a client to use send messages to the segment API.
    client, err := analytics.NewWithConfig(
        os.Getenv("SEGMENT_WRITE_KEY"),
        analytics.Config{
            Endpoint: os.Getenv("SEGMENT_ENDPOINT"),
        },
    )
    if err != nil { // ALWAYS check for errors!
        panic(err)
    }

    // Enqueues a track event that will be sent asynchronously.
    client.Enqueue(analytics.Track{
        UserId: "test-user",
        Event:  "test-snippet",
    })

    // Flushes any queued messages and closes the client - DON'T forget this step.
    client.Close()
}

Reporting SDK metrics to DataDog

If you want to have SDK metrics (number of events succeeded, failed etc.) to be delivered to DataDog use the following example:

package main

import (
    "os"

    analytics "github.com/FindHotel/analytics-go"
)

func main() {
    // Instantiates a client to use send messages to the segment API.
    reporter := analytics.NewDatadogReporter(os.Getenv("DD_API_KEY"), os.Getenv("DD_APP_KEY"))
    // if you don't need metrics use
    // reporter := &analytics.DiscardReporter{}

    client, err := analytics.NewWithConfig(
        os.Getenv("SEGMENT_WRITE_KEY"),
        analytics.Config{
            Endpoint: os.Getenv("SEGMENT_ENDPOINT"),
            Reporters: []analytics.Reporter{reporter},
        },
    )
    if err != nil {
        panic(err)
    }

    // Enqueues a track event that will be sent asynchronously.
    client.Enqueue(analytics.Track{
        UserId: "test-user",
        Event:  "test-snippet",
    })

    // Flushes any queued messages and closes the client.
    client.Close()
}

License

The library is released under the MIT license.

About

The hassle-free way to integrate analytics into any Go application. Maintainer - @velppa

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.4%
  • Makefile 0.6%