Preface : In this blog I will try to cover my experience in the 7th and 8th weeks in the open source organization CircuitVerse during Google summer of Code 2021
About Project 🚀
I have already described about my project in the previous blogs as well as you can get more info from the official GSoC Page , I am on track and developing new features for the LMS Integration project with CircuitVerse.
Till now the major tasks of the Integration of the assignments have been done with the LMSs like Moodle/Canvas/Sakaiusing the LTI protocol.
Progress made in this period 🎉
Main challenge during this period that I faced i.e., to develop the grade pass back service to the corresponding LMS from CircuitVerse.
ims-lti gem has it’s own grade pass back method but that requires to be the student to be logged-in in the LMS, but in our case we have to grade the students only after teacher submit the grades from their end.
But then I have used the native flow of grade parsing to the LMS as specified by IMS-Global.
The process of the grade submission is explained below..
Step 1: Forming the xml body
The grades needs to be passed back to the LMS as an POST request with an xml body as shown below.
The message_identifier is an 8 digit random number generated by the below mentioned method
And lis_result_sourced_id is the unique id supplied by the corresponding LMS which I have recorded and saved to the database while student first time opened the assignment.
Step 2 : Signing the xml body and sending as a POST request
After signing the xml body as per OAuth 1.0 that needs to be sent as a POST request lis_outcome_service_url which is an LMS supplied parameter available on launch by either of the student or teacher.
Here is the implementation
and here is the oauth signing procedure
Apart from the grade submission process I have also added the necessary tests for testing the entire LMS integration , for the testing purpose Rspec 3.10 is used
Here is the outcome of the testing of the entire integration
Future Goals 🗓
Feature wise almost everything is complete till now, but before it goes to the production one more thing that is feature flagging is required to control over the usage of the LMS integration by the entire user base.
I am using Flipper gem to implement that and hoping to complete that very shortly
Pull Requests made ✍️
I have already made two pull requests during this period here are they
Learning outcomes 📚
In the past few weeks I have learned a lot about best practises of developing in ruby on rails and have learned more about writing end to end tests using Rspec. I am continuously learning the Learning tools Interoperability as it is a quite new concept for me.
Thanks for reading……👋
Finally you have reached end of the Blog, if you found this Blog useful please comment below and give a like, and thank you for reading and Best of luck for you.🥳🥳.