| Total Complexity | 10 |
| Total Lines | 33 |
| Duplicated Lines | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
| 1 | module Lita |
||
| 4 | class Callback |
||
| 5 | attr_reader :robot |
||
| 6 | |||
| 7 | def initialize(robot) |
||
| 8 | @robot = robot |
||
| 9 | @logger_prefix = " -- #{self.class.name}: " |
||
| 10 | end |
||
| 11 | |||
| 12 | def create_user(user_data) |
||
| 13 | User.create user_data['phoneNumber'] |
||
| 14 | end |
||
| 15 | |||
| 16 | def update(message) |
||
| 17 | m = message |
||
| 18 | unless m.is_a?(Hash) && m.key?('event') && m['event'].index('/message-store/instant?type=SMS').is_a?(Fixnum) |
||
| 19 | return |
||
| 20 | end |
||
| 21 | unless m.key?('body') && m['body'].key?('from') && m['body']['from'].key?('phoneNumber') |
||
| 22 | return |
||
| 23 | end |
||
| 24 | Lita.logger.info "#{@logger_prefix}Processing RingCentral Message" |
||
| 25 | Lita.logger.info "#{@logger_prefix}" + MultiJson.encode(message) |
||
| 26 | |||
| 27 | user_phone_number = message['body']['from']['phoneNumber'] |
||
| 28 | Lita.logger.info "#{@logger_prefix}Message received from #{user_phone_number}" |
||
| 29 | user = Lita::User.find_by_name user_phone_number |
||
| 30 | user = create_user(message['body']['from']) unless user |
||
| 31 | source = Lita::Source.new user: user #, room: user_phone_number |
||
| 32 | post = message['body']['subject'].to_s |
||
| 33 | msg = Lita::Message.new @robot, post, source |
||
| 34 | @robot.receive msg |
||
| 35 | end |
||
| 36 | end |
||
| 37 | end |
||
| 40 |