Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/evalphobia/google-api-go-wrapper

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/evalphobia/google-api-go-wrapper

  • v0.8.5
  • Source
  • Go
  • Socket score

Version published
Created
Source

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())

FAQs

Package last updated on 01 Sep 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc