Files
ruoyi-vue-pro/tools/education-student-harness/adapter.js

35 lines
1018 B
JavaScript

'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 };