fix issue where webhooks were not always removed

This commit is contained in:
Josh 2017-07-21 11:58:36 -04:00
parent 2d7ab0006c
commit 3bc31048f4
1 changed files with 12 additions and 9 deletions

View File

@ -286,20 +286,19 @@ class BbbController < ApplicationController
end end
elsif eventName == "meeting_created_message" elsif eventName == "meeting_created_message"
# Fire an Actioncable event that updates _previously_joined for the client. # Fire an Actioncable event that updates _previously_joined for the client.
actioncable_event('create', params['id'], params['room_id']) actioncable_event('create', params[:id], params[:room_id])
elsif eventName == "meeting_destroyed_event" elsif eventName == "meeting_destroyed_event"
actioncable_event('destroy', params['id'], params['room_id']) actioncable_event('destroy', params[:id], params[:room_id])
record_id = event['payload']['meeting_id'].split('-')[0] # Since the meeting is destroyed we have no way get the callback url to remove the meeting, so we must build it.
rec_info = bbb_get_recordings({recordID: record_id}) remove_url = build_callback_url(params[:id], params[:room_id])
rec_info = rec_info[:recordings].first
# Remove the webhook. # Remove webhook for the meeting.
webhook_remove(rec_info[:metadata][:"gl-webhooks-callback-url"]) webhook_remove(remove_url)
elsif eventName == "user_joined_message" elsif eventName == "user_joined_message"
actioncable_event('join', params['id'], params['room_id'], event['payload']['user']['name'], event['payload']['user']['role']) actioncable_event('join', params[:id], params[:room_id], event['payload']['user']['name'], event['payload']['user']['role'])
elsif eventName == "user_left_message" elsif eventName == "user_left_message"
actioncable_event('leave', params['id'], params['room_id'], event['payload']['user']['name'], event['payload']['user']['role']) actioncable_event('leave', params[:id], params[:room_id], event['payload']['user']['name'], event['payload']['user']['role'])
else else
logger.info "Callback event will not be treated. Event name: #{eventName}" logger.info "Callback event will not be treated. Event name: #{eventName}"
end end
@ -307,6 +306,10 @@ class BbbController < ApplicationController
render head(:ok) && return render head(:ok) && return
end end
def build_callback_url(id, room_id)
"#{request.base_url}#{relative_root}/rooms/#{room_id}/#{URI.encode(id)}/callback"
end
def actioncable_event(method, id, room_id, user = 'none', role = 'none') def actioncable_event(method, id, room_id, user = 'none', role = 'none')
ActionCable.server.broadcast 'refresh_meetings', ActionCable.server.broadcast 'refresh_meetings',
method: method, method: method,