class Fog::Google::Pubsub::Real
Attributes
Public Class Methods
# File lib/fog/google/pubsub/real.rb, line 10 def initialize(options) shared_initialize(options[:google_project], GOOGLE_PUBSUB_API_VERSION, GOOGLE_PUBSUB_BASE_URL) options[:google_api_scope_url] = GOOGLE_PUBSUB_API_SCOPE_URLS.join(" ") @client = initialize_google_client(options) @pubsub = @client.discovered_api("pubsub", api_version) end
Public Instance Methods
Acknowledges a message received from a subscription.
@see cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions/acknowledge
# File lib/fog/google/requests/pubsub/acknowledge_subscription.rb, line 8 def acknowledge_subscription(subscription, ack_ids) api_method = @pubsub.projects.subscriptions.acknowledge parameters = { "subscription" => subscription.to_s } body = { "ackIds" => ack_ids } request(api_method, parameters, body) end
Create a subscription resource on a topic.
@param subscription_name [#to_s] name of the subscription to create.
Note that it must follow the restrictions of subscription names; specifically it must be named within a project (e.g. "projects/my-project/subscriptions/my-subscripton")
@param topic [Topic, to_s] topic instance or name of topic to create
subscription on
@param push_config [Hash] configuration for a push config (if empty
hash, then no push_config is created)
@param ack_deadline_seconds [Number] how long the service waits for
an acknowledgement before redelivering the message; if nil then service default of 10 is used
@see cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions/create
# File lib/fog/google/requests/pubsub/create_subscription.rb, line 19 def create_subscription(subscription_name, topic, push_config = {}, ack_deadline_seconds = nil) api_method = @pubsub.projects.subscriptions.create parameters = {} parameters["name"] = subscription_name.to_s unless subscription_name.nil? body = { "topic" => (topic.is_a?(Topic) ? topic.name : topic.to_s) } if !push_config.nil? && push_config.key?("push_endpoint") body["pushConfig"] = push_config["push_endpoint"].clone body["pushConfig"]["attributes"] = push_config["attributes"] if push_config.key?("attributes") end body["ackDeadlineSeconds"] = ack_deadline_seconds unless ack_deadline_seconds.nil? request(api_method, parameters, body) end
Create a topic on the remote service.
@param topic_name [#to_s] name of topic to create; note that it must
obey the naming rules for a topic (e.g. 'projects/myProject/topics/my_topic')
@see cloud.google.com/pubsub/reference/rest/v1/projects.topics/create
# File lib/fog/google/requests/pubsub/create_topic.rb, line 11 def create_topic(topic_name) api_method = @pubsub.projects.topics.create parameters = { "name" => topic_name.to_s } request(api_method, parameters) end
Delete a subscription on the remote service.
@param subscription_name [#to_s] name of subscription to delete @see cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions/delete
# File lib/fog/google/requests/pubsub/delete_subscription.rb, line 9 def delete_subscription(subscription_name) api_method = @pubsub.projects.subscriptions.delete parameters = { "subscription" => subscription_name.to_s } request(api_method, parameters) end
Delete a topic on the remote service.
@param topic_name [#to_s] name of topic to delete @see cloud.google.com/pubsub/reference/rest/v1/projects.topics/delete
# File lib/fog/google/requests/pubsub/delete_topic.rb, line 9 def delete_topic(topic_name) api_method = @pubsub.projects.topics.delete parameters = { "topic" => topic_name.to_s } request(api_method, parameters) end
Retrieves a subscription by name from the remote service.
@param subscription_name [#to_s] name of subscription to retrieve @see cloud.google.com/pubsub/reference/rest/v1/projects.topics/get
# File lib/fog/google/requests/pubsub/get_subscription.rb, line 9 def get_subscription(subscription_name) api_method = @pubsub.projects.subscriptions.get parameters = { "subscription" => subscription_name.to_s } request(api_method, parameters) end
Retrieves a resource describing a topic.
@param topic_name [#to_s] name of topic to retrieve @see cloud.google.com/pubsub/reference/rest/v1/projects.topics/get
# File lib/fog/google/requests/pubsub/get_topic.rb, line 9 def get_topic(topic_name) api_method = @pubsub.projects.topics.get parameters = { "topic" => topic_name.to_s } request(api_method, parameters) end
Gets a list of all subscriptions for a given project.
@param_name project [#to_s] Project path to list subscriptions under;
must be a project url prefix (e.g. 'projects/my-project'). If nil, the project configured on the client is used.
@see cloud.google.com/pubsub/reference/rest/v1/projects.topics/list
# File lib/fog/google/requests/pubsub/list_subscriptions.rb, line 11 def list_subscriptions(project = nil) api_method = @pubsub.projects.subscriptions.list parameters = { "project" => (project.nil? ? "projects/#{@project}" : project.to_s) } request(api_method, parameters) end
Gets a list of all topics for a given project.
@param_name project [#to_s] Project path to list topics under; must
be a project url prefix (e.g. 'projects/my-project'). If nil, the project configured on the client is used.
@see cloud.google.com/pubsub/reference/rest/v1/projects.topics/list
# File lib/fog/google/requests/pubsub/list_topics.rb, line 11 def list_topics(project = nil) api_method = @pubsub.projects.topics.list parameters = { "project" => (project.nil? ? "projects/#{@project}" : project.to_s) } request(api_method, parameters) end
Publish a list of messages to a topic.
@param messages [Array<Hash>] List of messages to be published to a
topic; each hash should have a value defined for 'data' or for 'attributes' (or both). Note that the value associated with 'data' must be base64 encoded.
@see cloud.google.com/pubsub/reference/rest/v1/projects.topics/publish
# File lib/fog/google/requests/pubsub/publish_topic.rb, line 12 def publish_topic(topic, messages) api_method = @pubsub.projects.topics.publish parameters = { "topic" => topic } body = { "messages" => messages } request(api_method, parameters, body) end
Pulls from a subscription. If option 'return_immediately' is false, then this method blocks until one or more messages is available or the remote server closes the connection.
@param subscription [Subscription, to_s] subscription instance or
name of subscription to pull from
@param options [Hash] options to modify the pull request @option options [Boolean] :return_immediately if true, method returns
after API call; otherwise the connection is held open until messages are available or the remote server closes the connection (defaults to true)
@option options [Number] :max_messages maximum number of messages to
retrieve (defaults to 10)
@see cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions/pull
# File lib/fog/google/requests/pubsub/pull_subscription.rb, line 19 def pull_subscription(subscription, options = { :return_immediately => true, :max_messages => 10 }) api_method = @pubsub.projects.subscriptions.pull parameters = { "subscription" => Fog::Google::Pubsub.subscription_name(subscription) } body = { "returnImmediately" => options[:return_immediately], "maxMessages" => options[:max_messages] } request(api_method, parameters, body) end