codingame-connector
Version:
An interface for Codingame website
127 lines (114 loc) • 3.1 kB
JavaScript
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
};
;