gensupport - ActiveState ActiveGo 1.8
...

Package gensupport

import "google.golang.org/api/gensupport"
Overview
Index

Overview ▾

Package gensupport is an internal implementation detail used by code generated by the google-api-go-generator tool.

This package may be modified at any time without regard for backwards compatibility. It should not be used directly by API users.

Index ▾

func CombineBodyMedia(body io.Reader, bodyContentType string, media io.Reader, mediaContentType string) (io.ReadCloser, string)
func DetermineContentType(media io.Reader, ctype string) (io.Reader, string)
func GoogleClientHeader(generatorVersion, clientElement string) string
func MarshalJSON(schema interface{}, forceSendFields, nullFields []string) ([]byte, error)
func PrepareUpload(media io.Reader, chunkSize int) (io.Reader, *MediaBuffer)
func ReaderAtToReader(ra io.ReaderAt, size int64) io.Reader
func RegisterHook(h Hook)
func Retry(ctx context.Context, f func() (*http.Response, error), backoff BackoffStrategy) (*http.Response, error)
func SendRequest(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error)
func SetOptions(u URLParams, opts ...googleapi.CallOption)
type BackoffStrategy
    func DefaultBackoffStrategy() BackoffStrategy
type ExponentialBackoff
    func (eb *ExponentialBackoff) Pause() (time.Duration, bool)
    func (eb *ExponentialBackoff) Reset()
type Hook
type JSONFloat64
    func (f *JSONFloat64) UnmarshalJSON(data []byte) error
type MediaBuffer
    func NewMediaBuffer(media io.Reader, chunkSize int) *MediaBuffer
    func (mb *MediaBuffer) Chunk() (chunk io.Reader, off int64, size int, err error)
    func (mb *MediaBuffer) Next()
type ResumableUpload
    func (rx *ResumableUpload) Progress() int64
    func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err error)
type URLParams
    func (u URLParams) Encode() string
    func (u URLParams) Get(key string) string
    func (u URLParams) Set(key, value string)
    func (u URLParams) SetMulti(key string, values []string)

Package files

backoff.go buffer.go doc.go header.go json.go jsonfloat.go media.go params.go resumable.go retry.go send.go

func CombineBodyMedia

func CombineBodyMedia(body io.Reader, bodyContentType string, media io.Reader, mediaContentType string) (io.ReadCloser, string)

CombineBodyMedia combines a json body with media content to create a multipart/related HTTP body. It returns a ReadCloser containing the combined body, and the overall "multipart/related" content type, with random boundary.

The caller must call Close on the returned ReadCloser if reads are abandoned before reaching EOF.

func DetermineContentType

func DetermineContentType(media io.Reader, ctype string) (io.Reader, string)

DetermineContentType determines the content type of the supplied reader. If the content type is already known, it can be specified via ctype. Otherwise, the content of media will be sniffed to determine the content type. If media implements googleapi.ContentTyper (deprecated), this will be used instead of sniffing the content. After calling DetectContentType the caller must not perform further reads on media, but rather read from the Reader that is returned.

func GoogleClientHeader

func GoogleClientHeader(generatorVersion, clientElement string) string

GoogleClientHeader returns the value to use for the x-goog-api-client header, which is used internally by Google.

func MarshalJSON

func MarshalJSON(schema interface{}, forceSendFields, nullFields []string) ([]byte, error)

MarshalJSON returns a JSON encoding of schema containing only selected fields. A field is selected if any of the following is true:

* it has a non-empty value
* its field name is present in forceSendFields and it is not a nil pointer or nil interface
* its field name is present in nullFields.

The JSON key for each selected field is taken from the field's json: struct tag.

func PrepareUpload

func PrepareUpload(media io.Reader, chunkSize int) (io.Reader, *MediaBuffer)

PrepareUpload determines whether the data in the supplied reader should be uploaded in a single request, or in sequential chunks. chunkSize is the size of the chunk that media should be split into. If chunkSize is non-zero and the contents of media do not fit in a single chunk (or there is an error reading media), then media will be returned as a MediaBuffer. Otherwise, media will be returned as a Reader.

After PrepareUpload has been called, media should no longer be used: the media content should be accessed via one of the return values.

func ReaderAtToReader

func ReaderAtToReader(ra io.ReaderAt, size int64) io.Reader

ReaderAtToReader adapts a ReaderAt to be used as a Reader. If ra implements googleapi.ContentTyper, then the returned reader will also implement googleapi.ContentTyper, delegating to ra.

func RegisterHook

func RegisterHook(h Hook)

RegisterHook registers a Hook to be called before each HTTP request by a generated API. Hooks are called in the order they are registered. Each hook can return a function; if it is non-nil, it is called after the HTTP request returns. These functions are called in the reverse order. RegisterHook should not be called concurrently with itself or SendRequest.

func Retry

func Retry(ctx context.Context, f func() (*http.Response, error), backoff BackoffStrategy) (*http.Response, error)

Retry invokes the given function, retrying it multiple times if the connection failed or the HTTP status response indicates the request should be attempted again. ctx may be nil.

func SendRequest

func SendRequest(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error)

SendRequest sends a single HTTP request using the given client. If ctx is non-nil, it calls all hooks, then sends the request with ctxhttp.Do, then calls any functions returned by the hooks in reverse order.

func SetOptions

func SetOptions(u URLParams, opts ...googleapi.CallOption)

type BackoffStrategy

type BackoffStrategy interface {
    // Pause returns the duration of the next pause and true if the operation should be
    // retried, or false if no further retries should be attempted.
    Pause() (time.Duration, bool)

    // Reset restores the strategy to its initial state.
    Reset()
}

func DefaultBackoffStrategy

func DefaultBackoffStrategy() BackoffStrategy

DefaultBackoffStrategy returns a default strategy to use for retrying failed upload requests.

type ExponentialBackoff

ExponentialBackoff performs exponential backoff as per https://en.wikipedia.org/wiki/Exponential_backoff. The initial pause time is given by Base. Once the total pause time exceeds Max, Pause will indicate no further retries.

type ExponentialBackoff struct {
    Base time.Duration
    Max  time.Duration
    // contains filtered or unexported fields
}

func (*ExponentialBackoff) Pause

func (eb *ExponentialBackoff) Pause() (time.Duration, bool)

func (*ExponentialBackoff) Reset

func (eb *ExponentialBackoff) Reset()

type Hook

Hook is the type of a function that is called once before each HTTP request that is sent by a generated API. It returns a function that is called after the request returns. Hooks are not called if the context is nil.

type Hook func(ctx context.Context, req *http.Request) func(resp *http.Response)

type JSONFloat64

JSONFloat64 is a float64 that supports proper unmarshaling of special float values in JSON, according to https://developers.google.com/protocol-buffers/docs/proto3#json. Although that is a proto-to-JSON spec, it applies to all Google APIs.

The jsonpb package (https://github.com/golang/protobuf/blob/master/jsonpb/jsonpb.go) has similar functionality, but only for direct translation from proto messages to JSON.

type JSONFloat64 float64

func (*JSONFloat64) UnmarshalJSON

func (f *JSONFloat64) UnmarshalJSON(data []byte) error

type MediaBuffer

MediaBuffer buffers data from an io.Reader to support uploading media in retryable chunks.

type MediaBuffer struct {
    // contains filtered or unexported fields
}

func NewMediaBuffer

func NewMediaBuffer(media io.Reader, chunkSize int) *MediaBuffer

func (*MediaBuffer) Chunk

func (mb *MediaBuffer) Chunk() (chunk io.Reader, off int64, size int, err error)

Chunk returns the current buffered chunk, the offset in the underlying media from which the chunk is drawn, and the size of the chunk. Successive calls to Chunk return the same chunk between calls to Next.

func (*MediaBuffer) Next

func (mb *MediaBuffer) Next()

Next advances to the next chunk, which will be returned by the next call to Chunk. Calls to Next without a corresponding prior call to Chunk will have no effect.

type ResumableUpload

ResumableUpload is used by the generated APIs to provide resumable uploads. It is not used by developers directly.

type ResumableUpload struct {
    Client *http.Client
    // URI is the resumable resource destination provided by the server after specifying "&uploadType=resumable".
    URI       string
    UserAgent string // User-Agent for header of the request
    // Media is the object being uploaded.
    Media *MediaBuffer
    // MediaType defines the media type, e.g. "image/jpeg".
    MediaType string

    // Callback is an optional function that will be periodically called with the cumulative number of bytes uploaded.
    Callback func(int64)

    // If not specified, a default exponential backoff strategy will be used.
    Backoff BackoffStrategy
    // contains filtered or unexported fields
}

func (*ResumableUpload) Progress

func (rx *ResumableUpload) Progress() int64

Progress returns the number of bytes uploaded at this point.

func (*ResumableUpload) Upload

func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err error)

Upload starts the process of a resumable upload with a cancellable context. It retries using the provided back off strategy until cancelled or the strategy indicates to stop retrying. It is called from the auto-generated API code and is not visible to the user. Before sending an HTTP request, Upload calls any registered hook functions, and calls the returned functions after the request returns (see send.go). rx is private to the auto-generated API code. Exactly one of resp or err will be nil. If resp is non-nil, the caller must call resp.Body.Close.

type URLParams

URLParams is a simplified replacement for url.Values that safely builds up URL parameters for encoding.

type URLParams map[string][]string

func (URLParams) Encode

func (u URLParams) Encode() string

Encode encodes the values into “URL encoded” form ("bar=baz&foo=quux") sorted by key.

func (URLParams) Get

func (u URLParams) Get(key string) string

Get returns the first value for the given key, or "".

func (URLParams) Set

func (u URLParams) Set(key, value string)

Set sets the key to value. It replaces any existing values.

func (URLParams) SetMulti

func (u URLParams) SetMulti(key string, values []string)

SetMulti sets the key to an array of values. It replaces any existing values. Note that values must not be modified after calling SetMulti so the caller is responsible for making a copy if necessary.