class Google::Cloud::Storage::Notification

# Notification

Represents a Pub/Sub notification subscription for a Cloud Storage bucket.

See {Bucket#create_notification}, {Bucket#notifications}, and {Bucket#notification}.

@see cloud.google.com/storage/docs/pubsub-notifications Cloud

Pub/Sub Notifications for Google Cloud

@attr_reader [String] bucket The name of the {Bucket} to which this

notification belongs.

@example

require "google/cloud/pubsub"
require "google/cloud/storage"

pubsub = Google::Cloud::Pubsub.new
storage = Google::Cloud::Storage.new

topic = pubsub.create_topic "my-topic"
topic.policy do |p|
  p.add "roles/pubsub.publisher",
        "serviceAccount:#{storage.service_account_email}"
end

bucket = storage.bucket "my-bucket"

notification = bucket.create_notification topic.name

Attributes

bucket[R]
gapi[RW]

@private The Google API Client object.

service[RW]

@private The Connection object.

user_project[RW]

@private A boolean value or a project ID string to indicate the project to be billed for operations.

Public Class Methods

from_gapi(bucket_name, gapi, service, user_project: nil) click to toggle source

@private New Notification from a Google::Apis::StorageV1::Notification object.

# File lib/google/cloud/storage/notification.rb, line 218
def self.from_gapi bucket_name, gapi, service, user_project: nil
  new.tap do |f|
    f.instance_variable_set :@bucket, bucket_name
    f.gapi = gapi
    f.service = service
    f.user_project = user_project
  end
end
new() click to toggle source

@private Creates a Notification object.

# File lib/google/cloud/storage/notification.rb, line 71
def initialize
  @bucket = nil
  @service = nil
  @gapi = nil
  @user_project = nil
end

Public Instance Methods

api_url() click to toggle source

A URL that can be used to access the notification using the REST API.

@return [String]

# File lib/google/cloud/storage/notification.rb, line 102
def api_url
  @gapi.self_link
end
custom_attrs() click to toggle source

The custom attributes of this notification. An optional list of additional attributes to attach to each Cloud Pub/Sub message published for this notification subscription.

@return [Hash(String => String)]

# File lib/google/cloud/storage/notification.rb, line 113
def custom_attrs
  @gapi.custom_attributes
end
delete() click to toggle source

Permanently deletes the notification.

The API call to delete the notification may be retried under certain conditions. See {Google::Cloud#storage} to control this behavior.

@return [Boolean] Returns `true` if the notification was deleted.

@example

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.bucket "my-bucket"
notification = bucket.notification "1"
notification.delete
# File lib/google/cloud/storage/notification.rb, line 209
def delete
  ensure_service!
  @service.delete_notification bucket, id, user_project: @user_project
  true
end
event_types() click to toggle source

The event types of this notification. If present, messages will only be sent for the listed event types. If empty, messages will be sent for all event types.

The following is a list of event types currently supported by Cloud Storage:

  • `OBJECT_FINALIZE` - Sent when a new object (or a new generation of an existing object) is successfully created in the bucket. This includes copying or rewriting an existing object. A failed upload does not trigger this event.

  • `OBJECT_METADATA_UPDATE` - Sent when the metadata of an existing object changes.

  • `OBJECT_DELETE` - Sent when an object has been permanently deleted. This includes objects that are overwritten or are deleted as part of the bucket's lifecycle configuration. For buckets with object versioning enabled, this is not sent when an object is archived (see `OBJECT_ARCHIVE`), even if archival occurs via the {File#delete} method.

  • `OBJECT_ARCHIVE` - Only sent when a bucket has enabled object versioning. This event indicates that the live version of an object has become an archived version, either because it was archived or because it was overwritten by the upload of an object of the same name.

Important: Additional event types may be released later. Client code should either safely ignore unrecognized event types, or else explicitly specify in their notification configuration which event types they are prepared to accept.

@return [Array<String>]

# File lib/google/cloud/storage/notification.rb, line 150
def event_types
  @gapi.event_types
end
id() click to toggle source

The ID of the notification.

@return [String]

# File lib/google/cloud/storage/notification.rb, line 93
def id
  @gapi.id
end
kind() click to toggle source

The kind of item this is. For notifications, this is always storage#notification.

@return [String]

# File lib/google/cloud/storage/notification.rb, line 84
def kind
  @gapi.kind
end
payload() click to toggle source

The desired content of the Pub/Sub message payload. Acceptable values are:

@return [String]

# File lib/google/cloud/storage/notification.rb, line 177
def payload
  @gapi.payload_format
end
prefix() click to toggle source

The file name prefix of this notification. If present, only apply this notification configuration to file names that begin with this prefix.

@return [String]

# File lib/google/cloud/storage/notification.rb, line 161
def prefix
  @gapi.object_name_prefix
end
topic() click to toggle source

The Cloud Pub/Sub topic to which this subscription publishes. Formatted as: `//pubsub.googleapis.com/projects/{project-id}/topics/{my-topic}`

@return [String]

# File lib/google/cloud/storage/notification.rb, line 188
def topic
  @gapi.topic
end

Protected Instance Methods

ensure_service!() click to toggle source

Raise an error unless an active service is available.

# File lib/google/cloud/storage/notification.rb, line 231
def ensure_service!
  raise "Must have active connection" unless service
end