Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.38 KB | None | 0 0
  1. class Channel
  2.  
  3.   RESPONSE = {}
  4.   REQUEST = {}
  5.  
  6.   @identifier = nil
  7.  
  8.   def self.receive state, json, headers, response
  9.     RESPONSE.clear
  10.     REQUEST[:state] = state
  11.     req = JSON.parse json
  12.     if req['data']
  13.       data = JSON.parse req['data']
  14.     end
  15.     case req['command']
  16.     when 'subscribe'
  17.       REQUEST[:identifierJSON] = req['identifier']
  18.       REQUEST[:identifier] = JSON.parse req['identifier']
  19.       REQUEST[:identifier]['channel'].constantize.subscribe data
  20.     when 'message'
  21.       REQUEST[:identifierJSON] = req['identifier']
  22.       REQUEST[:identifier] = JSON.parse req['identifier']
  23.       REQUEST[:identifier]['channel'].constantize.send data['action'], data
  24.     end
  25.  
  26.     response[0] = RESPONSE.to_json
  27.     200
  28.   end
  29.  
  30.   private
  31.  
  32.   def self.state
  33.     REQUEST[:state]
  34.   end
  35.  
  36.   def self.stream_from *channels
  37.     RESPONSE['subscribes'] = channels
  38.   end
  39.  
  40.   def self.answer message
  41.     message['identifier'] = REQUEST[:identifierJSON]
  42.     RESPONSE['answer'] = message
  43.   end
  44.  
  45.   def self.broadcast channel, message
  46.     message = {identifier: REQUEST[:identifierJSON], message: message}
  47.     broadcast = RESPONSE['broadcast']
  48.     if broadcast
  49.       if broadcast[channel]
  50.         broadcast[channel] << message
  51.       else
  52.         broadcast[channel] = [message]
  53.       end
  54.     else
  55.       RESPONSE['broadcast'] = {channel => [message]}
  56.     end
  57.   end
  58.  
  59. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement