const axios = require('axios'); const defaultInterpreter = require('./interpreter'); const defaultParser = require('./parser'); const defaultPrinter = require('./printer'); const newClient = ({ challengerURL, interpreter = defaultInterpreter, parser = defaultParser, playerName, printer = defaultPrinter, }) => { const nextChallenge = (token) => axios ({ url: `${challengerURL}/api/challenge?token=${token}`, }) .then(({ data: { expr } }) => expr); const solve = (challenge) => { const parsedExpression = parser.parse(challenge); const evaluatedExpression = interpreter.evaluate(parsedExpression); return printer.print(evaluatedExpression); } const start = () => axios({ method: 'POST', url: `${challengerURL}/api/register`, headers: { 'Content-Type': 'application/json;charset=utf-8' }, data: playerName, }) .then(({ data }) => data); return { nextChallenge, solve, start, }; }; module.exports = { newClient, };