MCPcopy Create free account
hub / github.com/PrairieLearn/PrairieLearn / _updateScoreWithClient

Function _updateScoreWithClient

lib/ltiOutcomes.js:69–111  ·  view source on GitHub ↗
(ai_id, client, callback)

Source from the content-addressed store, hash-verified

67 * Internal function helper for updateScore, assumes sql-db client.
68 */
69var _updateScoreWithClient = function(ai_id, client, callback) {
70
71 sqldb.queryWithClientZeroOrOneRow(client, sql.get_score, {ai_id: ai_id}, (err, result) => {
72 if (ERR(err, callback)) return;
73 if (result.rowCount == 0) {
74 return callback(null);
75 }
76
77 var info = result.rows[0];
78
79 var score = info.score_perc / 100;
80 if (score > 1) { score = 1.0; }
81 if (score < 0) { score = 0.0; }
82
83 var post_params = {
84 url: info.lis_outcome_service_url,
85 oauth: {
86 consumer_key: info.consumer_key,
87 consumer_secret: info.secret,
88 body_hash: true,
89 },
90 body: xmlReplaceResult(info.lis_result_sourcedid, score, info.date),
91 };
92
93 request.post(post_params, function(err, httpResponse, body) {
94 if (ERR(err, callback)) return;
95
96 // Inspect the XML result, log the action
97 parser.parseString(body, (err, result) => {
98 if (ERR(err, callback)) return;
99 const imsx_codeMajor = _.get(result, ['imsx_POXEnvelopeResponse', 'imsx_POXHeader', 'imsx_POXResponseHeaderInfo', 'imsx_statusInfo', 'imsx_codeMajor'], null);
100 if (imsx_codeMajor == 'success') {
101 logger.info(`ltiOutcomes.updateScore() ai_id=${ai_id} score=${score} returned ${result.imsx_POXEnvelopeResponse.imsx_POXHeader.imsx_POXResponseHeaderInfo.imsx_statusInfo.imsx_codeMajor}`);
102 } else {
103 logger.info(`ltiOutcomes.updateScore() ai_id=${ai_id} score=${score} did not return success, debugging follows:`);
104 logger.info(post_params);
105 logger.info(body);
106 }
107 callback(null);
108 });
109 });
110 });
111};
112
113// Only run if called directly, for development
114// e.g. node lib/ltiOutcomes <assessment_instance_id>

Callers 1

updateScoreFunction · 0.85

Calls 2

callbackFunction · 0.85
xmlReplaceResultFunction · 0.85

Tested by

no test coverage detected