# 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: "[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/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.
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())
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
example usage:
$ GOOGLE_API_GO_PRIVATEKEY="`cat secret.pem`" [email protected] go run vision.go -file=xxx
*/.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author