func (c Client) ImagesService() *vision.ImagesService {
	return c.service.Images
}
ImagesService returns a pointer to a vision's ImagesService object.
package pigeon
import (
	"context"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
	"golang.org/x/oauth2/google"
	vision "google.golang.org/api/vision/v1"
	"github.com/kaneshin/pigeon/credentials"
)
type (
	Client struct {
		config *Config
		service *vision.Service
	}
)
func New(c *Config, httpClient ...*http.Client) (*Client, error) {
	if c == nil {
		c = NewConfig()
	}
	if len(httpClient) > 0 {
		srv, err := vision.New(httpClient[0])
		if err != nil {
			return nil, fmt.Errorf("Unable to retrieve vision Client %v", err)
		}
		return &Client{
			config:  c,
			service: srv,
		}, nil
	}
	if c.Credentials == nil {
		c.Credentials = credentials.NewApplicationCredentials("")
	}
	creds, err := c.Credentials.Get()
	if err != nil {
		return nil, err
	}
	b, err := json.Marshal(creds)
	config, err := google.JWTConfigFromJSON(b, vision.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("Unable to parse client secret file to config: %v", err)
	}
	client := config.Client(context.Background())
	srv, err := vision.New(client)
	if err != nil {
		return nil, fmt.Errorf("Unable to retrieve vision Client %v", err)
	}
	return &Client{
		config:  c,
		service: srv,
	}, nil
}