Class: Fog::Google::Pubsub::Real

Inherits:
Object
  • Object
show all
Includes:
Shared
Defined in:
lib/fog/google/pubsub/real.rb,
lib/fog/google/requests/pubsub/get_topic.rb,
lib/fog/google/requests/pubsub/list_topics.rb,
lib/fog/google/requests/pubsub/create_topic.rb,
lib/fog/google/requests/pubsub/delete_topic.rb,
lib/fog/google/requests/pubsub/publish_topic.rb,
lib/fog/google/requests/pubsub/get_subscription.rb,
lib/fog/google/requests/pubsub/pull_subscription.rb,
lib/fog/google/requests/pubsub/list_subscriptions.rb,
lib/fog/google/requests/pubsub/create_subscription.rb,
lib/fog/google/requests/pubsub/delete_subscription.rb,
lib/fog/google/requests/pubsub/acknowledge_subscription.rb

Instance Attribute Summary collapse

Attributes included from Shared

#api_url, #api_version, #project

Instance Method Summary collapse

Methods included from Shared

#apply_client_options, #build_excon_response, #initialize_google_client, #request, #shared_initialize

Constructor Details

#initialize(options) ⇒ Real

Returns a new instance of Real.



10
11
12
13
14
15
16
17
# 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 = ::Google::Apis::PubsubV1::PubsubService.new
  apply_client_options(@pubsub, options)
end

Instance Attribute Details

#clientObject

Returns the value of attribute client.



7
8
9
# File 'lib/fog/google/pubsub/real.rb', line 7

def client
  @client
end

#pubsubObject (readonly)

Returns the value of attribute pubsub.



8
9
10
# File 'lib/fog/google/pubsub/real.rb', line 8

def pubsub
  @pubsub
end

Instance Method Details

#acknowledge_subscription(subscription, ack_ids) ⇒ Object

Acknowledges a message received from a subscription.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/fog/google/requests/pubsub/acknowledge_subscription.rb', line 8

def acknowledge_subscription(subscription, ack_ids)
  # Previous behavior allowed passing a single ack_id without being wrapped in an Array,
  # this is for backwards compatibility.
  unless ack_ids.is_a?(Array)
    ack_ids = [ack_ids]
  end
  ack_request = ::Google::Apis::PubsubV1::AcknowledgeRequest.new(
    :ack_ids => ack_ids
  )

  @pubsub.acknowledge_subscription(subscription, ack_request)
end

#create_subscription(subscription_name, topic, push_config = {}, ack_deadline_seconds = nil) ⇒ Object

Create a subscription resource on a topic.

Parameters:

  • 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”)

  • topic (Topic, #to_s)

    topic instance or name of topic to create subscription on

  • push_config (Hash) (defaults to: {})

    configuration for a push config (if empty hash, then no push_config is created)

  • ack_deadline_seconds (Number) (defaults to: nil)

    how long the service waits for an acknowledgement before redelivering the message; if nil then service default of 10 is used

See Also:



19
20
21
22
23
24
25
26
27
# File 'lib/fog/google/requests/pubsub/create_subscription.rb', line 19

def create_subscription(subscription_name, topic, push_config = {}, ack_deadline_seconds = nil)
  subscription = ::Google::Apis::PubsubV1::Subscription.new(
    :topic => topic,
    :ack_deadline_seconds => ack_deadline_seconds,
    :push_config => push_config
  )

  @pubsub.create_subscription(subscription_name, subscription)
end

#create_topic(topic_name) ⇒ Object

Create a topic on the remote service.

Parameters:

  • 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 Also:



11
12
13
# File 'lib/fog/google/requests/pubsub/create_topic.rb', line 11

def create_topic(topic_name)
  @pubsub.create_topic(topic_name)
end

#delete_subscription(subscription_name) ⇒ Object

Delete a subscription on the remote service.

Parameters:

  • subscription_name (#to_s)

    name of subscription to delete

See Also:



9
10
11
# File 'lib/fog/google/requests/pubsub/delete_subscription.rb', line 9

def delete_subscription(subscription_name)
  @pubsub.delete_subscription(subscription_name)
end

#delete_topic(topic_name) ⇒ Object

Delete a topic on the remote service.

Parameters:

  • topic_name (#to_s)

    name of topic to delete

See Also:



9
10
11
# File 'lib/fog/google/requests/pubsub/delete_topic.rb', line 9

def delete_topic(topic_name)
  @pubsub.delete_topic(topic_name)
end

#get_subscription(subscription_name) ⇒ Object

Retrieves a subscription by name from the remote service.

Parameters:

  • subscription_name (#to_s)

    name of subscription to retrieve

See Also:



9
10
11
# File 'lib/fog/google/requests/pubsub/get_subscription.rb', line 9

def get_subscription(subscription_name)
  @pubsub.get_subscription(subscription_name)
end

#get_topic(topic_name) ⇒ Object

Retrieves a resource describing a topic.

Parameters:

  • topic_name (#to_s)

    name of topic to retrieve

See Also:



9
10
11
# File 'lib/fog/google/requests/pubsub/get_topic.rb', line 9

def get_topic(topic_name)
  @pubsub.get_topic(topic_name)
end

#list_subscriptions(project = nil) ⇒ Object

Gets a list of all subscriptions for a given project.



11
12
13
14
15
16
17
18
19
# File 'lib/fog/google/requests/pubsub/list_subscriptions.rb', line 11

def list_subscriptions(project = nil)
  if project.nil?
    project = "projects/#{@project}"
  else
    project = project.to_s
  end

  @pubsub.list_subscriptions(project)
end

#list_topics(project = nil) ⇒ Object

Gets a list of all topics for a given project.



11
12
13
14
15
16
17
18
19
# File 'lib/fog/google/requests/pubsub/list_topics.rb', line 11

def list_topics(project = nil)
  if project.nil?
    project = "projects/#{@project}"
  else
    project = project.to_s
  end

  @pubsub.list_topics(project)
end

#publish_topic(topic, messages) ⇒ Object

Publish a list of messages to a topic.

Parameters:

  • 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 Also:



12
13
14
15
16
17
18
# File 'lib/fog/google/requests/pubsub/publish_topic.rb', line 12

def publish_topic(topic, messages)
  publish_request = ::Google::Apis::PubsubV1::PublishRequest.new(
    :messages => messages
  )

  @pubsub.publish_topic(topic, publish_request)
end

#pull_subscription(subscription, options = {}) ⇒ Object

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.

Parameters:

  • subscription (Subscription, #to_s)

    subscription instance or name of subscription to pull from

  • options (Hash) (defaults to: {})

    options to modify the pull request

Options Hash (options):

  • :return_immediately (Boolean)

    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)

  • :max_messages (Number)

    maximum number of messages to retrieve (defaults to 10)

See Also:



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fog/google/requests/pubsub/pull_subscription.rb', line 19

def pull_subscription(subscription, options = {})
  defaults = { :return_immediately => true,
               :max_messages => 10 }
  options = defaults.merge(options)

  pull_request = ::Google::Apis::PubsubV1::PullRequest.new(
    :return_immediately => options[:return_immediately],
    :max_messages => options[:max_messages]
  )

  @pubsub.pull_subscription(subscription, pull_request)
end