feat(education): complete student core loop delivery
This commit is contained in:
34
tools/education-student-harness/adapter.js
Normal file
34
tools/education-student-harness/adapter.js
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
|
||||
const API_PREFIX = '/app-api';
|
||||
|
||||
function buildRequest(path, options = {}, accessToken = '') {
|
||||
const headers = {
|
||||
Accept: 'application/json',
|
||||
...(options.body ? { 'Content-Type': 'application/json' } : {}),
|
||||
...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),
|
||||
};
|
||||
return { url: `${API_PREFIX}${path}`, options: { ...options, headers } };
|
||||
}
|
||||
|
||||
function answerCommand(session, questionSequence, selectedAnswer, idempotencyKey, clientSequence) {
|
||||
return {
|
||||
sessionId: session.id,
|
||||
questionSequence,
|
||||
selectedAnswer,
|
||||
idempotencyKey,
|
||||
clientSequence,
|
||||
expectedSessionVersion: session.sessionVersion,
|
||||
};
|
||||
}
|
||||
|
||||
function applyAnswerResult(session, result) {
|
||||
return {
|
||||
...session,
|
||||
sessionVersion: result.sessionVersion,
|
||||
serverVersion: result.serverVersion ?? result.sessionVersion,
|
||||
acceptedSequence: Math.max(session.acceptedSequence || 0, result.acceptedSequence || 0),
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = { buildRequest, answerCommand, applyAnswerResult };
|
||||
Reference in New Issue
Block a user