Giter Site home page Giter Site logo

google-api-go-wrapper's Introduction

google-api-go-wrapper

golang wrapper library of Google APIs Client Library for Go

Supported API

Requirements

Depends on the google's each libraries.

Installation

Install google-api-go-wrapper and required packages using go get command:

$ go get github.com/lukaszraczylo/google-api-go-wrapper/...

Usage

Config usage

// create client by given paramter.
client = analytics.New(config.Config{
    PrivateKey: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----`,
    Email: "[email protected]",
})

// create client by json body.
client = analytics.New(config.Config{
    CredsJSONBody: `{
        "type":"service_account",
        "private_key":"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
        "client_email":"[email protected]"
    }`,
})

// create client by given file path of credential.
client = analytics.New(config.Config{
    Filename: "/path/to/pem.json",
})

// use env parameter when above fields are empty.
// $GOOGLE_API_GO_PRIVATEKEY : used as `PrivateKey` field.
// $GOOGLE_API_GO_EMAIL : used as `Email` field.
// $GOOGLE_API_GO_JSON : used as `CredsJSONBody` field.
client = analytics.New(config.Config{})

If no other credentials could be found, Config will use https://godoc.org/golang.org/x/oauth2/google#FindDefaultCredentials.

Logger usage

Some clients have SetLogger method. You can set custom logger and handle error message from Google's API.

These default logger is defined in this library.

DummyLogger

DummyLogger is default logger. This do nothing. Just ignore errors.

import (
    "github.com/lukaszraczylo/google-api-go-wrapper/log"
)

client.SetLogger(&log.DummyLogger{})

StdLogger

StdLogger prints error messages on stderr.

import (
    "github.com/lukaszraczylo/google-api-go-wrapper/log"
)

client.SetLogger(&log.StdLogger{})

Stackdriver Error Reporting Logger

Stackdriver Error Reporting Logger sends error messages to Stackdriver Error Reporting.

See Example

Google Analytics

Install google's library:

$ go get google.golang.org/api/analytics/v3

Reatime ActiveUser

import (
    "github.com/lukaszraczylo/google-api-go-wrapper/analytics"
    "github.com/lukaszraczylo/google-api-go-wrapper/config"
)

...


client := analytics.New(config.Config{})

viewID := "00000000"
result, err := cli.GetRealtimeActiveUser(viewID)
if err != nil {
    fmt.Printf("[ERROR] %s\n", err.Error())
    return
}

fmt.Printf("activeUser=%d\n", result)

BigQuery

Install google's library:

$ go get google.golang.org/api/bigquery/v2

CreateTable

import (
    "github.com/lukaszraczylo/google-api-go-wrapper/bigquery"
    "github.com/lukaszraczylo/google-api-go-wrapper/config"
)

...


ds, err := bigquery.NewDataset(config.Config{}, projectID, datasetID)
if err != nil {
    panic(err)
}

err = ds.CreateTable(tableID, MySchema{})
if err != nil {
    panic(err)
}

...

type MySchema struct {
    Name      string    `bigquery:"username"`
    CreatedAt time.Time `bigquery:"created_at"`
}

InsertAll

import (
    "github.com/lukaszraczylo/google-api-go-wrapper/bigquery"
    "github.com/lukaszraczylo/google-api-go-wrapper/config"
)

...


ds, err := bigquery.NewDataset(config.Config{}, projectID, datasetID)
if err != nil {
    panic(err)
}

err = ds.InserAll(tableID, &MySchema{
    Name:      "foo",
    CreatedAt: time.Now(),
})
if err != nil {
    panic(err)
}

...

type MySchema struct {
    Name      string    `bigquery:"username"`
    CreatedAt time.Time `bigquery:"created_at"`
}

Stackdriver

Install google's library:

$ go get google.golang.org/api/logging/v2
$ go get google.golang.org/api/monitoring/v3

logging

import (
    "github.com/lukaszraczylo/google-api-go-wrapper/config"
    "github.com/lukaszraczylo/google-api-go-wrapper/stackdriver/logging"
)

...


logger, err := logging.NewLogger(config.Config{}, projectID)
if err != nil {
    panic(err)
}

err = logger.Write(logging.WriteData{
    Data:    map[string]interface{}{"key": "value"},
    LogName: "test_log",
    Resource: &logging.Resource{
        Type: "global",
    },
})
if err != nil {
    panic(err)
}

monitoring

import (
    "github.com/lukaszraczylo/google-api-go-wrapper/config"
    "github.com/lukaszraczylo/google-api-go-wrapper/stackdriver/monitoring"
)

...


monitor, err := monitoring.NewMonitor(config.Config{}, projectID)
if err != nil {
    panic(err)
}

err = monitor.Create(monitoring.Data{
    Data:       100,
    MetricType: "foo_sales",
    MetricKind: monitoring.MetricKindGauge,
    Resource: &monitoring.Resource{
        Type: "global",
    },
})
if err != nil {
    panic(err)
}

Cloud Vision

Install google's library:

$ go get google.golang.org/api/vision/v1

Annotate

import (
    "fmt"
    "io/ioutil"

    "github.com/lukaszraczylo/google-api-go-wrapper/config"
    "github.com/lukaszraczylo/google-api-go-wrapper/vision"
)

...


client, err := vision.New(config.Config{})
if err != nil {
    panic(err)
}

img, err := ioutil.ReadFile(file)
if err != nil {
    panic(err)
}

faceResult, err := cli.Face(img)
if err != nil {
    panic(err)
}
fmt.Printf("FaceDetect=%+v\n", faceResult.FaceResult())

safeResult, err := cli.Safe(img)
if err != nil {
    panic(err)
}
fmt.Printf("SafeSearch=%+v\n", safeResult.SafeResult())

textResult, err := cli.Text(img)
if err != nil {
    panic(err)
}
fmt.Printf("TextDetect=%+v\n", textResult.TextResult())

google-api-go-wrapper's People

Contributors

evalphobia avatar lukaszraczylo avatar bradleyfalzon avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.