From 41daeca1a28a100c97012f1da5c9424d5bcfdd74 Mon Sep 17 00:00:00 2001
From: Pedro Beschorner Marin <pedrobmarin@gmail.com>
Date: Sat, 29 May 2021 15:34:42 -0300
Subject: [PATCH] refactor(recording): callback url getter

---
 .../post_publish_recording_ready_callback.rb  | 34 ++++++++++++++-----
 1 file changed, 26 insertions(+), 8 deletions(-)

diff --git a/record-and-playback/core/scripts/post_publish/post_publish_recording_ready_callback.rb b/record-and-playback/core/scripts/post_publish/post_publish_recording_ready_callback.rb
index 3478043371..7c7debb1b0 100644
--- a/record-and-playback/core/scripts/post_publish/post_publish_recording_ready_callback.rb
+++ b/record-and-playback/core/scripts/post_publish/post_publish_recording_ready_callback.rb
@@ -36,9 +36,31 @@ opts = Trollop::options do
 end
 meeting_id = opts[:meeting_id]
 
-processed_files = "/var/bigbluebutton/recording/process/presentation/#{meeting_id}"
-meeting_metadata = BigBlueButton::Events.get_meeting_metadata("/var/bigbluebutton/recording/raw/#{meeting_id}/events.xml")
 bbb_web_properties = "/etc/bigbluebutton/bbb-web.properties"
+events_xml = "/var/bigbluebutton/recording/raw/#{meeting_id}/events.xml"
+
+def get_metadata(key, meeting_metadata)
+  meeting_metadata.key?(key) ? meeting_metadata[key].value : nil
+end
+
+def get_callback_url(events_xml)
+  meeting_metadata = BigBlueButton::Events.get_meeting_metadata(events_xml)
+
+  meta_bbb_rec_ready_url = "bbb-recording-ready-url"
+
+  callback_url = get_metadata(meta_bbb_rec_ready_url, meeting_metadata)
+
+  # For compatibility with some 3rd party implementations, look up for
+  # bn-recording-ready-url or canvas-recording-ready, when bbb-recording-ready
+  # is not included.
+  meta_bn_rec_ready_url = "bn-recording-ready-url"
+  meta_canvas_rec_ready_url = "canvas-recording-ready-url"
+
+  callback_url ||= get_metadata(meta_bn_rec_ready_url, meeting_metadata)
+  callback_url ||= get_metadata(meta_canvas_rec_ready_url, meeting_metadata)
+
+  callback_url
+end
 
 #
 # Main code
@@ -46,18 +68,14 @@ bbb_web_properties = "/etc/bigbluebutton/bbb-web.properties"
 BigBlueButton.logger.info("Recording Ready Notify for [#{meeting_id}] starts")
 
 begin
-  callback_url = meeting_metadata.key?("bbb-recording-ready-url") ? meeting_metadata["bbb-recording-ready-url"].value : nil
-  # For compatibility with some 3rd party implementations, look up for bn-recording-ready-url or canvas-recording-ready, when bbb-recording-ready is not included.
-  callback_url ||= meeting_metadata.key?("bn-recording-ready-url") ? meeting_metadata["bn-recording-ready-url"].value : nil
-  callback_url ||= meeting_metadata.key?("canvas-recording-ready-url") ? meeting_metadata["canvas-recording-ready-url"].value : nil
-
+  callback_url = get_callback_url(events_xml)
 
   unless callback_url.nil?
     BigBlueButton.logger.info("Making callback for recording ready notification")
 
     props = JavaProperties::Properties.new(bbb_web_properties)
     secret = props[:securitySalt]
-    external_meeting_id = meeting_metadata["meetingId"].value
+    external_meeting_id = BigBlueButton::Events.get_external_meeting_id(events_xml)
 
     payload = { meeting_id: external_meeting_id, record_id: meeting_id }
     payload_encoded = JWT.encode(payload, secret)
-- 
GitLab