Module: Restforce::Concerns::Streaming

Included in:
Data::Client
Defined in:
lib/restforce/concerns/streaming.rb

Instance Method Summary collapse

Instance Method Details

#fayeObject

Public: Faye client to use for subscribing to PushTopics



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/restforce/concerns/streaming.rb', line 15

def faye
  unless options[:instance_url]
    raise 'Instance URL missing. Call .authenticate! first.'
  end

  url = "#{options[:instance_url]}/cometd/#{options[:api_version]}"

  @faye ||= Faye::Client.new(url).tap do |client|
    client.set_header 'Authorization', "OAuth #{options[:oauth_token]}"

    client.bind 'transport:down' do
      Restforce.log "[COMETD DOWN]"
      client.set_header 'Authorization', "OAuth #{authenticate!.access_token}"
    end

    client.bind 'transport:up' do
      Restforce.log "[COMETD UP]"
    end
  end
end

#subscribe(channels, &block) ⇒ Object

Public: Subscribe to a PushTopic

channels - The name of the PushTopic channel(s) to subscribe to. block - A block to run when a new message is received.

Returns a Faye::Subscription



10
11
12
# File 'lib/restforce/concerns/streaming.rb', line 10

def subscribe(channels, &block)
  faye.subscribe Array(channels).map { |channel| "/topic/#{channel}" }, &block
end