function doRequest (opts, limit) { let req = requestLib; if (limit) { throttled.configure({ requests: limit, milliseconds: 1000 }); req = throttled; } return new Promise((resolve, reject) => req(opts, function (error, response, body) { if (error) { return reject(error); } if (response.statusCode >= 400) { const reason = new Error(); reason.response = response; return reject(reason); } resolve(body); })); }
async download(url, filename, req = request) { var filepath = path.join(process.cwd(), filecfg.upload, filename); this.mkdir(path.dirname(filepath)); let buff = await req({ url, encoding: null }); fs.writeFileSync(filepath, buff); return { url: filename, path: filepath, hash: this.hash(buff) }; }
async get({resource, data, qs, account}) { const options = this._buildRequestOptions({resource, data, qs, account}) const response = await req(options) if (resource.responseMapper) { return resource.responseMapper(response) } return response }
function listSubjectInLevel (level) { let levelUrl = levelUrlMapping[level.toLowerCase()] if (!levelUrl) throw new Error(`Unknown level ${level}`) return new Promise((resolve, reject) => { req({ uri: levelUrl, json: true }, (err, res, body) => { if (err) return void reject(err) if (res.statusCode !== 200) return void reject(new Error(`Error while loading ${levelUrl}: ${res.statusCode} (${res.statusMessage})`)) if (res.headers['content-type'].indexOf('json') < 0) return void reject(new Error(`${levelUrl} should return json, but it didn't.`)) let subjects = body try { resolve(subjects.map(s => ({ id: s.SyllabusCode.toString(), name: s.Title.replace(/\(\d{4}\)/, '').trim()}))) } catch (e) { reject(new Error(`Unexpected API response - ${e.message}`)) } }) }) }
get() { return new Promise((resolve, reject) => { if (!DarkSky.truthyOrZero(this.lat) || !DarkSky.truthyOrZero(this.long)) { reject("Request not sent. ERROR: Longitute or Latitude is missing.") } this._generateReqUrl() req( { url: this.url, json: true, timeout: this.timeoutVal, gzip: this.gzip }, (err, res, body) => { if (err) { reject(`Forecast cannot be retrieved. ERROR: ${err}`) return } if (res.statusCode !== 200) { reject( `Forecast cannot be retrieved. Response: ${res.statusCode} ${ res.statusMessage }` ) return } resolve(body) } ) }) }
/** * * @param {Account} authorizedAccount - account with valid access_token for the request * * @return {Promise<{nickname: string, password: string, _}>} - resolves to created test account * @throws on Mercadolibre API error response. */ function requestTestAccount(authorizedAccount) { const testAccountRequestOptions = { method: 'POST', uri: 'https://api.mercadolibre.com/users/test_user', qs: { access_token: authorizedAccount.auth.accessToken }, body: { site_id: 'MLA' }, json: true // Automatically stringifies the body to JSON } return req(testAccountRequestOptions) }
try { console.log('Request to mathservice!'); result = await req(`http://${host}:${port}/${method}/${numbers}`); results.push(JSON.parse(result)); console.log('Response received from mathservice!');
return void resolve() req({url: urlParse.href}, (err, res, body) => { if (err) return void reject(err) if (res.statusCode !== 200) {
function login (email, password) { function getRequestToken () { return new Promise((resolve, reject) => { req({ followRedirect: false, method: 'GET', uri: '/account/Login' }, (err, res, body) => { req({ followRedirect: false, method: 'POST', uri: '/account/Login', form: { __RequestVerificationToken: csrfToken,
function callScheduleDownload (fl) { return new Promise((resolve, reject) => { req({ uri: '/FileResource/ScheduleDownload', method: 'POST', headers: {'Content-Type': 'application/json; charset=utf-8'}, body: JSON.stringify(fl) }, (err, res, body) => { if (err) return void reject(err) req({ uri: '/FileResource/isdownloadpackagecomplete/' + encodeURIComponent(s3id), method: 'GET', json: true }, (err, res, body) => { if (err) return void reject(err) if (res.statusCode !== 200) return void reject(new Error(`isdownloadpackagecomplete failed with code ${res.statusCode}`))
let dir = urlParse.searchParams.get('dir') if (dir === null) return void resolve() req({url: currentUrl}, (err, res, body) => { if (err) return void reject(err) if (res.statusCode !== 200) {
async post({resource, data, qs, body, account}) { const options = this._buildRequestOptions({method: 'POST', resource, data, qs, body, account}) return req(options) }
async function queryFilelist (subjectId) { function getSubjectPage () { return new Promise((resolve, reject) => { req({ uri: `/past-exam-papers/?keywords=${encodeURIComponent(subjectId)}` }, (err, res, body) => { if (err) return void reject(err) if (res.statusCode !== 200) return void reject(new Error(`Coulen't reach subject page: ${res.statusCode}`)) req({ uri: `/dynamic/filtered-past-exam-papers/?keywords=${encodeURIComponent(subjectId)}&searchQuery=` + (years ? `&years=${years.join(',')}` : '') }, (err, res, body) => { if (err) return void reject(err)