...

Package gensupport

import "google.golang.org/api/internal/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 DecodeResponse(target interface{}, res *http.Response) error
func GoVersion() string
func MarshalJSON(schema interface{}, forceSendFields, nullFields []string) ([]byte, error)
func ReaderAtToReader(ra io.ReaderAt, size int64) io.Reader
func SendRequest(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error)
func SendRequestWithRetry(ctx context.Context, client *http.Client, req *http.Request, retry *RetryConfig) (*http.Response, error)
func SetGetBody(req *http.Request, f func() (io.ReadCloser, error))
func SetHeaders(userAgent, contentType string, userHeaders http.Header, keyvals ...string) http.Header
func SetOptions(u URLParams, opts ...googleapi.CallOption)
func WrapError(err error) error
type Backoff
type JSONFloat64
    func (f *JSONFloat64) UnmarshalJSON(data []byte) error
type MediaBuffer
    func NewMediaBuffer(media io.Reader, chunkSize int) *MediaBuffer
    func PrepareUpload(media io.Reader, chunkSize int) (r io.Reader, mb *MediaBuffer, singleChunk bool)
    func (mb *MediaBuffer) Chunk() (chunk io.Reader, off int64, size int, err error)
    func (mb *MediaBuffer) Next()
type MediaInfo
    func NewInfoFromMedia(r io.Reader, options []googleapi.MediaOption) *MediaInfo
    func NewInfoFromResumableMedia(r io.ReaderAt, size int64, mediaType string) *MediaInfo
    func (mi *MediaInfo) ResumableUpload(locURI string) *ResumableUpload
    func (mi *MediaInfo) SetProgressUpdater(pu googleapi.ProgressUpdater)
    func (mi *MediaInfo) UploadRequest(reqHeaders http.Header, body io.Reader) (newBody io.Reader, getBody func() (io.ReadCloser, error), cleanup func())
    func (mi *MediaInfo) UploadType() string
type ResumableUpload
    func (rx *ResumableUpload) Progress() int64
    func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err error)
type RetryConfig
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

buffer.go doc.go error.go json.go jsonfloat.go media.go params.go resumable.go retry.go retryable_linux.go send.go version.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 DecodeResponse

func DecodeResponse(target interface{}, res *http.Response) error

DecodeResponse decodes the body of res into target. If there is no body, target is unchanged.

func GoVersion

func GoVersion() string

GoVersion returns the Go runtime version. The returned string has no whitespace.

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:

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

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 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 req.WithContext, then calls any functions returned by the hooks in reverse order.

func SendRequestWithRetry

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

SendRequestWithRetry sends a single HTTP request using the given client, with retries if a retryable error is returned. If ctx is non-nil, it calls all hooks, then sends the request with req.WithContext, then calls any functions returned by the hooks in reverse order.

func SetGetBody

func SetGetBody(req *http.Request, f func() (io.ReadCloser, error))

SetGetBody sets the GetBody field of req to f. This was once needed to gracefully support Go 1.7 and earlier which didn't have that field.

Deprecated: the code generator no longer uses this as of 2019-02-19. Nothing else should be calling this anyway, but we won't delete this immediately; it will be deleted in as early as 6 months.

func SetHeaders

func SetHeaders(userAgent, contentType string, userHeaders http.Header, keyvals ...string) http.Header

SetHeaders sets common headers for all requests. The keyvals header pairs should have a corresponding value for every key provided. If there is an odd number of keyvals this method will panic.

func SetOptions

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

SetOptions sets the URL params and any additional `CallOption` or `MultiCallOption` passed in.

func WrapError

func WrapError(err error) error

WrapError creates an apierror.APIError from err, wraps it in err, and returns err. If err is not a googleapi.Error (or a google.golang.org/grpc/status.Status), it returns err without modification.

type Backoff

Backoff is an interface around gax.Backoff's Pause method, allowing tests to provide their own implementation.

type Backoff interface {
    Pause() time.Duration
}

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. It should be created with NewMediaBuffer.

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

func NewMediaBuffer

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

NewMediaBuffer initializes a MediaBuffer.

func PrepareUpload

func PrepareUpload(media io.Reader, chunkSize int) (r io.Reader, mb *MediaBuffer, singleChunk bool)

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 zero, media is returned as the first value, and the other two return values are nil, true.

Otherwise, a MediaBuffer is returned, along with a bool indicating whether the contents of media fit in a single chunk.

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

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 MediaInfo

MediaInfo holds information for media uploads. It is intended for use by generated code only.

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

func NewInfoFromMedia

func NewInfoFromMedia(r io.Reader, options []googleapi.MediaOption) *MediaInfo

NewInfoFromMedia should be invoked from the Media method of a call. It returns a MediaInfo populated with chunk size and content type, and a reader or MediaBuffer if needed.

func NewInfoFromResumableMedia

func NewInfoFromResumableMedia(r io.ReaderAt, size int64, mediaType string) *MediaInfo

NewInfoFromResumableMedia should be invoked from the ResumableMedia method of a call. It returns a MediaInfo using the given reader, size and media type.

func (*MediaInfo) ResumableUpload

func (mi *MediaInfo) ResumableUpload(locURI string) *ResumableUpload

ResumableUpload returns an appropriately configured ResumableUpload value if the upload is resumable, or nil otherwise.

func (*MediaInfo) SetProgressUpdater

func (mi *MediaInfo) SetProgressUpdater(pu googleapi.ProgressUpdater)

SetProgressUpdater sets the progress updater for the media info.

func (*MediaInfo) UploadRequest

func (mi *MediaInfo) UploadRequest(reqHeaders http.Header, body io.Reader) (newBody io.Reader, getBody func() (io.ReadCloser, error), cleanup func())

UploadRequest sets up an HTTP request for media upload. It adds headers as necessary, and returns a replacement for the body and a function for http.Request.GetBody.

func (*MediaInfo) UploadType

func (mi *MediaInfo) UploadType() string

UploadType determines the type of upload: a single request, or a resumable series of requests.

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)

    // Retry optionally configures retries for requests made against the upload.
    Retry *RetryConfig

    // ChunkRetryDeadline configures the per-chunk deadline after which no further
    // retries should happen.
    ChunkRetryDeadline time.Duration
    // 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 RetryConfig

RetryConfig allows configuration of backoff timing and retryable errors.

type RetryConfig struct {
    Backoff     *gax.Backoff
    ShouldRetry func(err error) bool
}

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.