Ruby Sample Code Live Course Sessions

Shows how to create, update and remove a session to to a live course training.

You will need an authorization token. To get a token, follow the instructions in the API overview.

 # =====================================================================
 #
 # Sample code for Bridge Live Course Sessions API's
 #
 # =====================================================================

 require 'rest_client'
 require 'json'
 require 'date'

 # Global path to Bridge URL. Your URL will be different.
 $bridge_url = "http://bridge.local.bridgeops.sh:3000"
 $auth_token = "your authorization token"


 # Create some live courses
 def create_live_course(token)
   url = "#{$bridge_url}/api/author/live_courses"
   payload = { "live_courses" => [
       # These ID's of "1", "2" etc... are a requirement of RestClient only
       "1" => {
           "title" => "Bridge Wars",
           "description" => "An intergalactic battle between spaces and tabs",
           "type" => "String"
       }
     ]
   }
   headers = {AUTHORIZATION: "Basic #{token}"}
   response = RestClient.post(url, payload, headers)
   json_response = JSON.parse(response)
   courses = json_response["live_courses"]
   # the array only contains one course
   courses[0]["id"]
 end

 # Create a session on a live course
 def create_sessions(token, id)
   url = "#{$bridge_url}/api/author/live_courses/#{id}/sessions"
   payload = { "sessions" => [
                 # These ID's of "1", "2" etc... are a requirement of RestClient only
                 "1" => {
                   "start_at" => DateTime.now + 7,
                   "end_at"   => DateTime.now + 7.25,
                   "location" => "Instructure Offices Seventh Floor",
                   "seats"    => 50
                 },
                 "2" => {
                     "start_at" => DateTime.now + 14,
                     "end_at"   => DateTime.now + 14.25,
                     "location" => "Instructure Offices Fourth Floor",
                     "seats"    => 30
                 },
                 "3" => {
                     "start_at" => DateTime.now + 21,
                     "end_at"   => DateTime.now + 21.25,
                     "location" => "Instructure Offices Fifth Floor",
                     "seats"    => 10
                 },
               ]
             }
   headers = {AUTHORIZATION: "Basic #{token}"}
   response = RestClient.post(url, payload, headers)
   puts response.description
 end

 # List all existing live courses
 def list_all_sessions(token, id)
   url = "#{$bridge_url}/api/author/live_courses/#{id}/sessions"
   headers = {AUTHORIZATION: "Basic #{token}"}
   response = RestClient.get(url, headers)
   json_response = JSON.parse(response)
   puts "Found #{json_response["sessions"].count} sessions"
   session_ids = []
   json_response["sessions"].each do |session|
     session_ids << session["id"]
     inspect_session( token, id, session["id"])
   end
   session_ids
 end

 # List details about a course
 def inspect_session(token, course_id, session_id)
   url = "#{$bridge_url}/api/author/live_courses/#{course_id}/sessions/#{session_id}"
   headers = {AUTHORIZATION: "Basic #{token}"}
   response = RestClient.get(url, headers)
   json_response = JSON.parse(response)
   json_response["sessions"].each do |session|
     puts "#{session["id"]}: #{session["location"]}"
     puts "  start time:   #{session["start_at"]}"
     puts "  end time:     #{session["end_at"]}"
     puts "  seats:        #{session["seats"]}"
     puts "  registered:   #{session["registered_count"]}"
     puts "  live course:  #{session["live_course_id"]}"
     puts "  concluded at: #{session["concluded_at"]}"
   end
 end

 # Update a course with a new title and description
 def update_session(token, course_id, session_id)
   puts "Updates a session"
   url = "#{$bridge_url}/api/author/live_courses/#{course_id}/sessions/#{session_id}"
   payload = { "session" => {
               "start_at" => DateTime.now + 3,
               "end_at"   => DateTime.now + 3.25,
               "location" => "Instructure Offices Third Floor",
               "seats"    => 200
              }}
   headers = {AUTHORIZATION: "Basic #{token}"}
   response = RestClient.put(url, payload, headers)
   puts response.description
 end

 def conclude_session(token, course_id, session_id)
   puts "Concludes a session"
   url = "#{$bridge_url}/api/author/live_courses/#{course_id}/sessions/#{session_id}/conclude"
   payload = {}
   headers = {AUTHORIZATION: "Basic #{token}"}
   response = RestClient.post(url, payload, headers)
   puts response.description
 end

 def delete_a_session(token, course_id, session_id)
   puts "Deleting a session: #{session_id}"
   url = "#{$bridge_url}/api/author/live_courses/#{course_id}/sessions/#{session_id}"
   headers = {AUTHORIZATION: "Basic #{token}"}
   response = RestClient.delete(url, headers)
   puts response.description
 end

 # Start execution
 course_id = create_live_course($auth_token)
 create_sessions($auth_token, course_id)
 session_ids = list_all_sessions($auth_token, course_id)
 update_session($auth_token, course_id, session_ids.first)
 conclude_session($auth_token, course_id, session_ids.last)
 delete_a_session($auth_token, course_id, session_ids.first)