UNPKG

codingame-connector

Version:
127 lines (114 loc) 3.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _request = require('request'); var _request2 = _interopRequireDefault(_request); var _parse = require('./parse.js'); var _parse2 = _interopRequireDefault(_parse); var _error = require('./error.js'); var _error2 = _interopRequireDefault(_error); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Codingame's API to log in * * @name login * @function * @param {string} username - The login to authenticate * @param {string} password - The password to authenticate * @returns {Promise<Object>} Body of the response * @memberof module:codingame/api * @instance */ var login = function login(username, password) { return new _promise2.default(function (resolve, reject) { var options = { "method": 'POST', "baseUrl": 'https://www.codingame.com', "uri": '/services/CodingamerRemoteService/loginSiteV2', "headers": { "Accept": 'application/json', "Content-Type": 'application/json;charset=utf-8' }, "body": [username, password, true], "jar": true, "json": true }; (0, _request2.default)(options, function (error, response, body) { if (response.statusCode >= 400) { reject(error); } else { resolve(body); } }); }); }; /** * Codingame's API for launching a test * * @name test * @function * @param {string} exercise - Hash of the exercise to test * @param {number} test - Test's number * @param {string} language - Language of the program to send * @param {string} bundle - Content of the program to send * @returns {Promise<Object>} The result only if request succeed and test passed * @memberof module:codingame/api * @instance */ /** * @file Module 'codingame/api' * @author woshilapin <woshilapin@tuziwo.info> */ /** * API for Codingame's services * @module codingame/api */ var test = function test(exercise, test, language, bundle) { return new _promise2.default(function (resolve, reject) { var options = { "method": 'POST', "baseUrl": 'https://www.codingame.com', "uri": '/services/TestSessionRemoteService/play', "headers": { "Accept": 'application/json', "Content-Type": 'application/json;charset=utf-8' }, "body": [exercise, { "code": bundle, "programmingLanguageId": language, "multipleLanguages": { "testIndex": test } }], "jar": true, "json": true }; (0, _request2.default)(options, function (error, response, body) { if (response.statusCode >= 400) { reject(error); } else { var meta = { "exercise": exercise, "test": test, "language": language, "bundle": bundle }; _parse2.default.parse(body).then(function (success) { resolve(meta); }, function (error) { if (error instanceof _error2.default) { error.attach(meta); } reject(error); }); } }); }); }; exports.default = { "login": login, "test": test };