// Package videointelligence provides access to the Google Cloud Video Intelligence API. // // See https://cloud.google.com/video-intelligence/docs/ // // Usage example: // // import "google.golang.org/api/videointelligence/v1beta1" // ... // videointelligenceService, err := videointelligence.New(oauthHttpClient) package videointelligence // import "google.golang.org/api/videointelligence/v1beta1" import ( "bytes" "encoding/json" "errors" "fmt" context "golang.org/x/net/context" ctxhttp "golang.org/x/net/context/ctxhttp" gensupport "google.golang.org/api/gensupport" googleapi "google.golang.org/api/googleapi" "io" "net/http" "net/url" "strconv" "strings" ) // Always reference these packages, just in case the auto-generated code // below doesn't. var _ = bytes.NewBuffer var _ = strconv.Itoa var _ = fmt.Sprintf var _ = json.NewDecoder var _ = io.Copy var _ = url.Parse var _ = gensupport.MarshalJSON var _ = googleapi.Version var _ = errors.New var _ = strings.Replace var _ = context.Canceled var _ = ctxhttp.Do const apiId = "videointelligence:v1beta1" const apiName = "videointelligence" const apiVersion = "v1beta1" const basePath = "https://videointelligence.googleapis.com/" // OAuth2 scopes used by this API. const ( // View and manage your data across Google Cloud Platform services CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" ) func New(client *http.Client) (*Service, error) { if client == nil { return nil, errors.New("client is nil") } s := &Service{client: client, BasePath: basePath} s.Videos = NewVideosService(s) return s, nil } type Service struct { client *http.Client BasePath string // API endpoint base URL UserAgent string // optional additional User-Agent fragment Videos *VideosService } func (s *Service) userAgent() string { if s.UserAgent == "" { return googleapi.UserAgent } return googleapi.UserAgent + " " + s.UserAgent } func NewVideosService(s *Service) *VideosService { rs := &VideosService{s: s} return rs } type VideosService struct { s *Service } // GoogleCloudVideointelligenceV1beta1AnnotateVideoProgress: Video // annotation progress. Included in the `metadata` // field of the `Operation` returned by the `GetOperation` // call of the `google::longrunning::Operations` service. type GoogleCloudVideointelligenceV1beta1AnnotateVideoProgress struct { // AnnotationProgress: Progress metadata for all videos specified in // `AnnotateVideoRequest`. AnnotationProgress []*GoogleCloudVideointelligenceV1beta1VideoAnnotationProgress `json:"annotationProgress,omitempty"` // ForceSendFields is a list of field names (e.g. "AnnotationProgress") // to unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "AnnotationProgress") to // include in API requests with the JSON null value. By default, fields // with empty values are omitted from API requests. However, any field // with an empty value appearing in NullFields will be sent to the // server as null. It is an error if a field in this list has a // non-empty value. This may be used to include null fields in Patch // requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1AnnotateVideoProgress) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1AnnotateVideoProgress raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest: Video // annotation request. type GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest struct { // Features: Requested video annotation features. // // Possible values: // "FEATURE_UNSPECIFIED" - Unspecified. // "LABEL_DETECTION" - Label detection. Detect objects, such as dog or // flower. // "SHOT_CHANGE_DETECTION" - Shot change detection. Features []string `json:"features,omitempty"` // InputContent: The video data bytes. Encoding: base64. If unset, the // input video(s) // should be specified via `input_uri`. If set, `input_uri` should be // unset. InputContent string `json:"inputContent,omitempty"` // InputUri: Input video location. Currently, only // [Google Cloud Storage](https://cloud.google.com/storage/) URIs // are // supported, which must be specified in the following // format: // `gs://bucket-id/object-id` (other URI formats // return // google.rpc.Code.INVALID_ARGUMENT). For more information, see // [Request URIs](/storage/docs/reference-uris). // A video URI may include wildcards in `object-id`, and thus // identify // multiple videos. Supported wildcards: '*' to match 0 or more // characters; // '?' to match 1 character. If unset, the input video should be // embedded // in the request as `input_content`. If set, `input_content` should be // unset. InputUri string `json:"inputUri,omitempty"` // LocationId: Optional cloud region where annotation should take place. // Supported cloud // regions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no // region // is specified, a region will be determined based on video file // location. LocationId string `json:"locationId,omitempty"` // OutputUri: Optional location where the output (in JSON format) should // be stored. // Currently, only [Google Cloud // Storage](https://cloud.google.com/storage/) // URIs are supported, which must be specified in the following // format: // `gs://bucket-id/object-id` (other URI formats // return // google.rpc.Code.INVALID_ARGUMENT). For more information, see // [Request URIs](/storage/docs/reference-uris). OutputUri string `json:"outputUri,omitempty"` // VideoContext: Additional video context and/or feature-specific // parameters. VideoContext *GoogleCloudVideointelligenceV1beta1VideoContext `json:"videoContext,omitempty"` // ForceSendFields is a list of field names (e.g. "Features") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Features") to include in // API requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleCloudVideointelligenceV1beta1AnnotateVideoResponse: Video // annotation response. Included in the `response` // field of the `Operation` returned by the `GetOperation` // call of the `google::longrunning::Operations` service. type GoogleCloudVideointelligenceV1beta1AnnotateVideoResponse struct { // AnnotationResults: Annotation results for all videos specified in // `AnnotateVideoRequest`. AnnotationResults []*GoogleCloudVideointelligenceV1beta1VideoAnnotationResults `json:"annotationResults,omitempty"` // ForceSendFields is a list of field names (e.g. "AnnotationResults") // to unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "AnnotationResults") to // include in API requests with the JSON null value. By default, fields // with empty values are omitted from API requests. However, any field // with an empty value appearing in NullFields will be sent to the // server as null. It is an error if a field in this list has a // non-empty value. This may be used to include null fields in Patch // requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1AnnotateVideoResponse) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1AnnotateVideoResponse raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleCloudVideointelligenceV1beta1LabelAnnotation: Label annotation. type GoogleCloudVideointelligenceV1beta1LabelAnnotation struct { // Description: Textual description, e.g. `Fixed-gear bicycle`. Description string `json:"description,omitempty"` // LanguageCode: Language code for `description` in BCP-47 format. LanguageCode string `json:"languageCode,omitempty"` // Locations: Where the label was detected and with what confidence. Locations []*GoogleCloudVideointelligenceV1beta1LabelLocation `json:"locations,omitempty"` // ForceSendFields is a list of field names (e.g. "Description") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Description") to include // in API requests with the JSON null value. By default, fields with // empty values are omitted from API requests. However, any field with // an empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1LabelAnnotation) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1LabelAnnotation raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleCloudVideointelligenceV1beta1LabelLocation: Label location. type GoogleCloudVideointelligenceV1beta1LabelLocation struct { // Confidence: Confidence that the label is accurate. Range: [0, 1]. Confidence float64 `json:"confidence,omitempty"` // Level: Label level. // // Possible values: // "LABEL_LEVEL_UNSPECIFIED" - Unspecified. // "VIDEO_LEVEL" - Video-level. Corresponds to the whole video. // "SEGMENT_LEVEL" - Segment-level. Corresponds to one of // `AnnotateSpec.segments`. // "SHOT_LEVEL" - Shot-level. Corresponds to a single shot (i.e. a // series of frames // without a major camera position or background change). // "FRAME_LEVEL" - Frame-level. Corresponds to a single video frame. Level string `json:"level,omitempty"` // Segment: Video segment. Set to [-1, -1] for video-level labels. // Set to [timestamp, timestamp] for frame-level labels. // Otherwise, corresponds to one of `AnnotateSpec.segments` // (if specified) or to shot boundaries (if requested). Segment *GoogleCloudVideointelligenceV1beta1VideoSegment `json:"segment,omitempty"` // ForceSendFields is a list of field names (e.g. "Confidence") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Confidence") to include in // API requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1LabelLocation) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1LabelLocation raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } func (s *GoogleCloudVideointelligenceV1beta1LabelLocation) UnmarshalJSON(data []byte) error { type noMethod GoogleCloudVideointelligenceV1beta1LabelLocation var s1 struct { Confidence gensupport.JSONFloat64 `json:"confidence"` *noMethod } s1.noMethod = (*noMethod)(s) if err := json.Unmarshal(data, &s1); err != nil { return err } s.Confidence = float64(s1.Confidence) return nil } // GoogleCloudVideointelligenceV1beta1VideoAnnotationProgress: // Annotation progress for a single video. type GoogleCloudVideointelligenceV1beta1VideoAnnotationProgress struct { // InputUri: Video file location in // [Google Cloud Storage](https://cloud.google.com/storage/). InputUri string `json:"inputUri,omitempty"` // ProgressPercent: Approximate percentage processed thus // far. // Guaranteed to be 100 when fully processed. ProgressPercent int64 `json:"progressPercent,omitempty"` // StartTime: Time when the request was received. StartTime string `json:"startTime,omitempty"` // UpdateTime: Time of the most recent update. UpdateTime string `json:"updateTime,omitempty"` // ForceSendFields is a list of field names (e.g. "InputUri") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "InputUri") to include in // API requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1VideoAnnotationProgress) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1VideoAnnotationProgress raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleCloudVideointelligenceV1beta1VideoAnnotationResults: Annotation // results for a single video. type GoogleCloudVideointelligenceV1beta1VideoAnnotationResults struct { // Error: If set, indicates an error. Note that for a single // `AnnotateVideoRequest` // some videos may succeed and some may fail. Error *GoogleRpcStatus `json:"error,omitempty"` // InputUri: Video file location in // [Google Cloud Storage](https://cloud.google.com/storage/). InputUri string `json:"inputUri,omitempty"` // LabelAnnotations: Label annotations. There is exactly one element for // each unique label. LabelAnnotations []*GoogleCloudVideointelligenceV1beta1LabelAnnotation `json:"labelAnnotations,omitempty"` // ShotAnnotations: Shot annotations. Each shot is represented as a // video segment. ShotAnnotations []*GoogleCloudVideointelligenceV1beta1VideoSegment `json:"shotAnnotations,omitempty"` // ForceSendFields is a list of field names (e.g. "Error") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Error") to include in API // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1VideoAnnotationResults) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1VideoAnnotationResults raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleCloudVideointelligenceV1beta1VideoContext: Video context and/or // feature-specific parameters. type GoogleCloudVideointelligenceV1beta1VideoContext struct { // LabelDetectionMode: If label detection has been requested, what // labels should be detected // in addition to video-level labels or segment-level labels. If // unspecified, // defaults to `SHOT_MODE`. // // Possible values: // "LABEL_DETECTION_MODE_UNSPECIFIED" - Unspecified. // "SHOT_MODE" - Detect shot-level labels. // "FRAME_MODE" - Detect frame-level labels. // "SHOT_AND_FRAME_MODE" - Detect both shot-level and frame-level // labels. LabelDetectionMode string `json:"labelDetectionMode,omitempty"` // LabelDetectionModel: Model to use for label detection. // Supported values: "latest" and "stable" (the default). LabelDetectionModel string `json:"labelDetectionModel,omitempty"` // Segments: Video segments to annotate. The segments may overlap and // are not required // to be contiguous or span the whole video. If unspecified, each // video // is treated as a single segment. Segments []*GoogleCloudVideointelligenceV1beta1VideoSegment `json:"segments,omitempty"` // ShotChangeDetectionModel: Model to use for shot change // detection. // Supported values: "latest" and "stable" (the default). ShotChangeDetectionModel string `json:"shotChangeDetectionModel,omitempty"` // ForceSendFields is a list of field names (e.g. "LabelDetectionMode") // to unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "LabelDetectionMode") to // include in API requests with the JSON null value. By default, fields // with empty values are omitted from API requests. However, any field // with an empty value appearing in NullFields will be sent to the // server as null. It is an error if a field in this list has a // non-empty value. This may be used to include null fields in Patch // requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1VideoContext) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1VideoContext raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleCloudVideointelligenceV1beta1VideoSegment: Video segment. type GoogleCloudVideointelligenceV1beta1VideoSegment struct { // EndTimeOffset: End offset in microseconds (inclusive). Unset means 0. EndTimeOffset int64 `json:"endTimeOffset,omitempty,string"` // StartTimeOffset: Start offset in microseconds (inclusive). Unset // means 0. StartTimeOffset int64 `json:"startTimeOffset,omitempty,string"` // ForceSendFields is a list of field names (e.g. "EndTimeOffset") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "EndTimeOffset") to include // in API requests with the JSON null value. By default, fields with // empty values are omitted from API requests. However, any field with // an empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleCloudVideointelligenceV1beta1VideoSegment) MarshalJSON() ([]byte, error) { type noMethod GoogleCloudVideointelligenceV1beta1VideoSegment raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleLongrunningOperation: This resource represents a long-running // operation that is the result of a // network API call. type GoogleLongrunningOperation struct { // Done: If the value is `false`, it means the operation is still in // progress. // If true, the operation is completed, and either `error` or `response` // is // available. Done bool `json:"done,omitempty"` // Error: The error result of the operation in case of failure or // cancellation. Error *GoogleRpcStatus `json:"error,omitempty"` // Metadata: Service-specific metadata associated with the operation. // It typically // contains progress information and common metadata such as create // time. // Some services might not provide such metadata. Any method that // returns a // long-running operation should document the metadata type, if any. Metadata googleapi.RawMessage `json:"metadata,omitempty"` // Name: The server-assigned name, which is only unique within the same // service that // originally returns it. If you use the default HTTP mapping, // the // `name` should have the format of `operations/some/unique/name`. Name string `json:"name,omitempty"` // Response: The normal response of the operation in case of success. // If the original // method returns no data on success, such as `Delete`, the response // is // `google.protobuf.Empty`. If the original method is // standard // `Get`/`Create`/`Update`, the response should be the resource. For // other // methods, the response should have the type `XxxResponse`, where // `Xxx` // is the original method name. For example, if the original method // name // is `TakeSnapshot()`, the inferred response type // is // `TakeSnapshotResponse`. Response googleapi.RawMessage `json:"response,omitempty"` // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "Done") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Done") to include in API // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) { type noMethod GoogleLongrunningOperation raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleRpcStatus: The `Status` type defines a logical error model that // is suitable for different // programming environments, including REST APIs and RPC APIs. It is // used by // [gRPC](https://github.com/grpc). The error model is designed to // be: // // - Simple to use and understand for most users // - Flexible enough to meet unexpected needs // // # Overview // // The `Status` message contains three pieces of data: error code, error // message, // and error details. The error code should be an enum value // of // google.rpc.Code, but it may accept additional error codes if needed. // The // error message should be a developer-facing English message that // helps // developers *understand* and *resolve* the error. If a localized // user-facing // error message is needed, put the localized message in the error // details or // localize it in the client. The optional error details may contain // arbitrary // information about the error. There is a predefined set of error // detail types // in the package `google.rpc` that can be used for common error // conditions. // // # Language mapping // // The `Status` message is the logical representation of the error // model, but it // is not necessarily the actual wire format. When the `Status` message // is // exposed in different client libraries and different wire protocols, // it can be // mapped differently. For example, it will likely be mapped to some // exceptions // in Java, but more likely mapped to some error codes in C. // // # Other uses // // The error model and the `Status` message can be used in a variety // of // environments, either with or without APIs, to provide a // consistent developer experience across different // environments. // // Example uses of this error model include: // // - Partial errors. If a service needs to return partial errors to the // client, // it may embed the `Status` in the normal response to indicate the // partial // errors. // // - Workflow errors. A typical workflow has multiple steps. Each step // may // have a `Status` message for error reporting. // // - Batch operations. If a client uses batch request and batch // response, the // `Status` message should be used directly inside batch response, // one for // each error sub-response. // // - Asynchronous operations. If an API call embeds asynchronous // operation // results in its response, the status of those operations should // be // represented directly using the `Status` message. // // - Logging. If some API errors are stored in logs, the message // `Status` could // be used directly after any stripping needed for security/privacy // reasons. type GoogleRpcStatus struct { // Code: The status code, which should be an enum value of // google.rpc.Code. Code int64 `json:"code,omitempty"` // Details: A list of messages that carry the error details. There will // be a // common set of message types for APIs to use. Details []googleapi.RawMessage `json:"details,omitempty"` // Message: A developer-facing error message, which should be in // English. Any // user-facing error message should be localized and sent in // the // google.rpc.Status.details field, or localized by the client. Message string `json:"message,omitempty"` // ForceSendFields is a list of field names (e.g. "Code") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, // non-interface field appearing in ForceSendFields will be sent to the // server regardless of whether the field is empty or not. This may be // used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Code") to include in API // requests with the JSON null value. By default, fields with empty // values are omitted from API requests. However, any field with an // empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. // This may be used to include null fields in Patch requests. NullFields []string `json:"-"` } func (s *GoogleRpcStatus) MarshalJSON() ([]byte, error) { type noMethod GoogleRpcStatus raw := noMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // method id "videointelligence.videos.annotate": type VideosAnnotateCall struct { s *Service googlecloudvideointelligencev1beta1Annotatevideorequest *GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest urlParams_ gensupport.URLParams ctx_ context.Context header_ http.Header } // Annotate: Performs asynchronous video annotation. Progress and // results can be // retrieved through the `google.longrunning.Operations` // interface. // `Operation.metadata` contains `AnnotateVideoProgress` // (progress). // `Operation.response` contains `AnnotateVideoResponse` (results). func (r *VideosService) Annotate(googlecloudvideointelligencev1beta1Annotatevideorequest *GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest) *VideosAnnotateCall { c := &VideosAnnotateCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.googlecloudvideointelligencev1beta1Annotatevideorequest = googlecloudvideointelligencev1beta1Annotatevideorequest return c } // Fields allows partial responses to be retrieved. See // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse // for more information. func (c *VideosAnnotateCall) Fields(s ...googleapi.Field) *VideosAnnotateCall { c.urlParams_.Set("fields", googleapi.CombineFields(s)) return c } // Context sets the context to be used in this call's Do method. Any // pending HTTP request will be aborted if the provided context is // canceled. func (c *VideosAnnotateCall) Context(ctx context.Context) *VideosAnnotateCall { c.ctx_ = ctx return c } // Header returns an http.Header that can be modified by the caller to // add HTTP headers to the request. func (c *VideosAnnotateCall) Header() http.Header { if c.header_ == nil { c.header_ = make(http.Header) } return c.header_ } func (c *VideosAnnotateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) for k, v := range c.header_ { reqHeaders[k] = v } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudvideointelligencev1beta1Annotatevideorequest) if err != nil { return nil, err } reqHeaders.Set("Content-Type", "application/json") c.urlParams_.Set("alt", alt) urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/videos:annotate") urls += "?" + c.urlParams_.Encode() req, _ := http.NewRequest("POST", urls, body) req.Header = reqHeaders return gensupport.SendRequest(c.ctx_, c.s.client, req) } // Do executes the "videointelligence.videos.annotate" call. // Exactly one of *GoogleLongrunningOperation or error will be non-nil. // Any non-2xx status code is an error. Response headers are in either // *GoogleLongrunningOperation.ServerResponse.Header or (if a response // was returned at all) in error.(*googleapi.Error).Header. Use // googleapi.IsNotModified to check whether the returned error was // because http.StatusNotModified was returned. func (c *VideosAnnotateCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { if res.Body != nil { res.Body.Close() } return nil, &googleapi.Error{ Code: res.StatusCode, Header: res.Header, } } if err != nil { return nil, err } defer googleapi.CloseBody(res) if err := googleapi.CheckResponse(res); err != nil { return nil, err } ret := &GoogleLongrunningOperation{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, }, } target := &ret if err := json.NewDecoder(res.Body).Decode(target); err != nil { return nil, err } return ret, nil // { // "description": "Performs asynchronous video annotation. Progress and results can be\nretrieved through the `google.longrunning.Operations` interface.\n`Operation.metadata` contains `AnnotateVideoProgress` (progress).\n`Operation.response` contains `AnnotateVideoResponse` (results).", // "flatPath": "v1beta1/videos:annotate", // "httpMethod": "POST", // "id": "videointelligence.videos.annotate", // "parameterOrder": [], // "parameters": {}, // "path": "v1beta1/videos:annotate", // "request": { // "$ref": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest" // }, // "response": { // "$ref": "GoogleLongrunning_Operation" // }, // "scopes": [ // "https://www.googleapis.com/auth/cloud-platform" // ] // } }