Class: Magellan::Gcs::Proxy::PubsubSubscription::MessageWrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/magellan/gcs/proxy/pubsub_subscription.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(subscription, original) ⇒ MessageWrapper

Returns a new instance of MessageWrapper.

Parameters:



45
46
47
48
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 45

def initialize(subscription, original)
  @subscription = subscription
  @original = original
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 50

def method_missing(name, *args, &block)
  receiver =
    case name
    when :message_id, :attributes, :publish_time, :data then original.message
    when :ack_id then original
    end
  receiver ? receiver.send(name, *args, &block) : super
end

Instance Attribute Details

#originalObject (readonly)

Returns the value of attribute original.



41
42
43
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 41

def original
  @original
end

#subscriptionObject (readonly)

Returns the value of attribute subscription.



41
42
43
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 41

def subscription
  @subscription
end

Instance Method Details

#ack_optionsObject



67
68
69
70
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 67

def ack_options
  # https://github.com/google/google-api-ruby-client/blob/master/lib/google/apis/options.rb#L48
  @ack_options ||= { authorization: GCP.auth, retries: 10 }
end

#acknowledge!Object Also known as: ack!



72
73
74
75
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 72

def acknowledge!
  req = Google::Apis::PubsubV1::AcknowledgeRequest.new(ack_ids: [ack_id])
  GCP.pubsub.acknowledge_subscription(subscription.name, req, options: ack_options)
end

#delay!(new_deadline) ⇒ Object



78
79
80
81
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 78

def delay!(new_deadline)
  req = Google::Apis::PubsubV1::ModifyAckDeadlineRequest.new(ack_deadline_seconds: new_deadline, ack_ids: [ack_id])
  GCP.pubsub.modify_subscription_ack_deadline(subscription.name, req)
end

#respond_to_missing?(name) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
65
# File 'lib/magellan/gcs/proxy/pubsub_subscription.rb', line 59

def respond_to_missing?(name)
  case name
  when :message_id, :attributes, :publish_time, :data then true
  when :ack_id then true
  else false
  end
end