Class: Ferris::RTM
- Inherits:
-
Object
- Object
- Ferris::RTM
- Defined in:
- lib/ferris/rtm.rb
Defined Under Namespace
Classes: WebSocketWriter
Constant Summary collapse
- HTTPS_PORT =
443
- SOCKET_READ_SIZE =
1024
Instance Method Summary collapse
- #go ⇒ Object
-
#initialize(options = {}) ⇒ RTM
constructor
A new instance of RTM.
- #join ⇒ Object
- #kill ⇒ Object
- #on(event, &block) ⇒ Object
- #send(type, message = {}) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ RTM
Returns a new instance of RTM.
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ferris/rtm.rb', line 31 def initialize ={} @id = 0 @jobs = [] @stopped = false @callbacks = Hash.new { |h,k| h[k] = [] } @q = Queue.new @qlock = Mutex.new @token = .fetch :token @api_url = .fetch :api_url, 'https://slack.com/api' @logger = .fetch :logger, Slog.new @wss_uri = construct_wss_uri @token, @api_url log.trace event: 'RTM client initialized', wss_uri: @wss_uri.to_s end |
Instance Method Details
#go ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/ferris/rtm.rb', line 66 def go log.trace event: 'connecting' socket, driver = connect log.debug event: 'connected' @jobs << go_read_input(socket, driver) @jobs << go_write_output(socket, driver) @jobs end |
#join ⇒ Object
78 |
# File 'lib/ferris/rtm.rb', line 78 def join ; @jobs.map(&:join) end |
#kill ⇒ Object
76 |
# File 'lib/ferris/rtm.rb', line 76 def kill ; @jobs.map(&:kill) end |
#on(event, &block) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/ferris/rtm.rb', line 46 def on event, &block unless [ :open, :close, :error, :message ].include? event log.fatal event: 'invalid event', on_event: event raise ArgumentError end log.debug event: 'adding callback', on_event: event @callbacks[event] << block end |
#send(type, message = {}) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/ferris/rtm.rb', line 57 def send type, ={} log.debug event: 'sending message', message: [:id] ||= next_id [:type] = type enqueue nil end |