google-api-go-wrapper

module
v0.8.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2020 License: MIT

README

google-api-go-wrapper

golang wrapper library of Google APIs Client Library for Go

Supported API

  • Google Analytics
    • Realtime.Get
  • BigQuery
    • Datasets.Insert
    • Datasets.Patch
    • Datasets.Update
    • Datasets.Delete
    • Datasets.Get
    • Datasets.List
    • Datasets.Delete
    • Jobs.Insert
    • Jobs.Query
    • Jobs.Cancel
    • Jobs.Get
    • Jobs.List
    • Jobs.GetQueryResults
    • Tabledata.InsertAll
    • Tabledata.List
    • Table.Insert
    • Table.Patch
    • Table.Update
    • Table.Delete
    • Table.Get
    • Table.List
  • Google Calendar
    • Events.List
  • Stackdriver logging
    • Write
  • Stackdriver monitoring
    • TimeSeries.Create
  • Stackdriver trace
    • OpenCensus API
  • Storage
    • Upload
    • Download
    • Delete
    • Rename
  • Cloud Vision
    • Annotate

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/evalphobia/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: "xxx@xxx.gserviceaccount.com",
})

// 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":"xxx@xxx.gserviceaccount.com"
    }`,
})

// 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/evalphobia/google-api-go-wrapper/log"
)

client.SetLogger(&log.DummyLogger{})
StdLogger

StdLogger prints error messages on stderr.

import (
    "github.com/evalphobia/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/evalphobia/google-api-go-wrapper/analytics"
    "github.com/evalphobia/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/evalphobia/google-api-go-wrapper/bigquery"
    "github.com/evalphobia/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/evalphobia/google-api-go-wrapper/bigquery"
    "github.com/evalphobia/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/evalphobia/google-api-go-wrapper/config"
    "github.com/evalphobia/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/evalphobia/google-api-go-wrapper/config"
    "github.com/evalphobia/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/evalphobia/google-api-go-wrapper/config"
    "github.com/evalphobia/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())

Directories

Path Synopsis
example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run analytics.go -viewid=xxx example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run bigquery.go -project=xxx -dataset=yyy -table=zzz example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run stackdriver_logging.go -project=xxx -data='{"key": "value"}' example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run stackdriver_monitoring.go -project=xxx -metric=foo_sales -value=2 example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run vision.go -file=xxx
example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run analytics.go -viewid=xxx example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run bigquery.go -project=xxx -dataset=yyy -table=zzz example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run stackdriver_logging.go -project=xxx -data='{"key": "value"}' example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run stackdriver_monitoring.go -project=xxx -metric=foo_sales -value=2 example usage: $ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" GOOGLE_API_GO_EMAIL=xxx@xxx.gserviceaccount.com go run vision.go -file=xxx
log
stackdriver

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL