Created
October 1, 2012 16:33
-
-
Save jameskeane/3812865 to your computer and use it in GitHub Desktop.
Working draft of 3rd party module API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Top hat monocle - third party module API | |
// ===== | |
// ## Module Discovery | |
// All 3rd party modules _must_ be discoverable based on a simple http resource URI | |
// i.e. | |
// GET /modules/question | |
{ | |
name: "Question Module", | |
author: "Top Hat Monocle", | |
apikey: "2314h32kljh349823jefskludfs90234ij", | |
create: 'https://example.com/modules/question/create', | |
render: 'https://example.com/modules/question/render', | |
grade: 'https://example.com/modules/question/grade' | |
} | |
// ## Module creation | |
// give us an HTML page that can be embedded with google CAJA, | |
// we will give you save(JSON) and cancel() methods | |
// ## Module Rendering | |
hat.module // The JSON object that was saved during object creation | |
hat.user = { // The user object | |
id: 'random GUID that anonymously identifies the user', | |
is_teacher: function() {}, // Are they a teacher? | |
is_student: function() {} // Are they a student? | |
} | |
// Different APIs are exposed based on the user's role | |
if( hat.user.is_teacher() ) { | |
// teachers can exposed globals | |
hat.global(key, value) | |
// per user kv-store | |
hat.set(key, value) | |
hat.get(key) | |
// record marks, for gradebook | |
// Called when a student submits an answer, | |
// submission is of the form {submission: {your json}, grade: 0-1} | |
hat.on('student:submission', function(student, submission) { | |
}); | |
} else if( hat.user.is_student() ) { | |
// This is for submitting answers, the student:submission event will be called | |
hat.submit(JSON); | |
// per user kv-store | |
hat.set(key, value) | |
hat.get(key) | |
hat.on('global:update', function(key, value) { | |
}); | |
hat.on('global:created', function(key, value) { | |
}); | |
} | |
// ## Module Grading | |
// We will post a JSON object to your grading URI, i.e. | |
// -- | |
// POST /modules/question/grade | |
// { module: {The JSON saved during creation}, submission: {the JSON submitted by the student} } | |
// -- You will respond with a normalized grade between 0 and 1 | |
// i.e. { grade: 0.7 } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
is everything from hat.module down is code that exists within the template that they give us? or is hat a variable in our app that they're allowed to access