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)