diff --git a/lib/scorm_cloud.rb b/lib/scorm_cloud.rb index fb07f8b..5a32e50 100644 --- a/lib/scorm_cloud.rb +++ b/lib/scorm_cloud.rb @@ -8,6 +8,7 @@ require 'scorm_cloud/base_object' require 'scorm_cloud/course' require 'scorm_cloud/registration' +require 'scorm_cloud/registration_result' require 'scorm_cloud/base_service' require 'scorm_cloud/debug_service' diff --git a/lib/scorm_cloud/registration.rb b/lib/scorm_cloud/registration.rb index 6d3fb36..fa8b08a 100644 --- a/lib/scorm_cloud/registration.rb +++ b/lib/scorm_cloud/registration.rb @@ -4,7 +4,7 @@ class Registration < ScormCloud::BaseObject attr_accessor :id, :courseid, :app_id, :registration_id, :course_id, :course_title, :learner_id, :learner_first_name, :learner_last_name, :email, :create_date, :first_access_date, :last_access_date, - :completed_date, :instances, :last_course_version_launched + :completed_date, :instances, :last_course_version_launched,:tin_can_registration_id def self.from_xml(element) r = Registration.new @@ -16,4 +16,4 @@ def self.from_xml(element) end end -end \ No newline at end of file +end diff --git a/lib/scorm_cloud/registration_result.rb b/lib/scorm_cloud/registration_result.rb new file mode 100644 index 0000000..1b9df3b --- /dev/null +++ b/lib/scorm_cloud/registration_result.rb @@ -0,0 +1,16 @@ +module ScormCloud + class RegistrationResult < ScormCloud::BaseObject + + attr_accessor :complete, :success, :totaltime, :score, :format, :instanceid, :regid + + def self.from_xml(element) + r = RegistrationResult.new + r.set_attributes(element.attributes) + element.children.each do |element| + r.set_attr(element.name, element.text) + end + r + end + + end +end diff --git a/lib/scorm_cloud/registration_service.rb b/lib/scorm_cloud/registration_service.rb index 3b518fd..5a7e98a 100644 --- a/lib/scorm_cloud/registration_service.rb +++ b/lib/scorm_cloud/registration_service.rb @@ -17,6 +17,13 @@ def create_registration(course_id, reg_id, first_name, last_name, learner_id, op !xml.elements["/rsp/success"].nil? end + def get_registration_detail(reg_id) + xml = connection.call("rustici.registration.getRegistrationDetail", {:regid => reg_id }) + !xml.elements["/rsp/success"].nil? + + Registration.from_xml(xml.elements["/rsp/registration"]) + end + def delete_registration(reg_id) xml = connection.call("rustici.registration.deleteRegistration", {:regid => reg_id }) !xml.elements["/rsp/success"].nil? @@ -28,8 +35,9 @@ def get_registration_list(options = {}) end def get_registration_result(reg_id, format="course") - raise "Illegal format argument: #{format}" unless ["course","activity","full"].include?(format) - connection.call_raw("rustici.registration.getRegistrationResult", { :regid => reg_id, :format => format }) + xml = connection.call("rustici.registration.getRegistrationResult", { :regid => reg_id }) + + RegistrationResult.from_xml(xml.elements["/rsp/registrationreport"]) end def launch(reg_id, redirect_url, options = {}) diff --git a/spec/registration_service_spec.rb b/spec/registration_service_spec.rb index 9bf638c..ee2a5fc 100644 --- a/spec/registration_service_spec.rb +++ b/spec/registration_service_spec.rb @@ -15,6 +15,7 @@ it { should respond_to(:get_registration_result).with(2).arguments } it { should respond_to(:launch).with(2).arguments } it { should respond_to(:launch).with(3).arguments } + it { should respond_to(:get_registration_detail).with(1).arguments } # not implemented it { should respond_to(:get_registration_list_results)}