NodeJS Client Library for Codeforces API
codeforces-api-node is a simple NodeJS library for Codeforces Api with streaming support.
$ npm install codeforces-api
codeforces-api-node supports both ES5 and ES6.
//ES5
var Codeforces = require('codeforces-api');
//ES2015
import Codeforces from 'codeforces-api';
//set API keys for authentication
Codeforces.setApis('your_codeforces_api_key', 'your_codeforces_api_secret');
Codeforces.method( parameters , callback );
Codeforces.user.rating({ handle: 'user_handle' } , function (err, data) {
if (err) {
//handle error and return
}
//use data
});
Method | Parameters | Description |
---|---|---|
blogEntry.comments | blogEntryId | More |
blogEntry.view | blogEntryId | More |
contest.hacks | contestId | More |
contest.list | gym | More |
contest.ratingChanges | contestId | More |
contest.standings | contestId , from , count , handles , room , showUnofficial | More |
contest.status | contestId , handle , from , count | More |
problemset.problems | tags | More |
problemset.recentStatus | count | More |
recentActions | maxCount | More |
user.blogEntries | handle | More |
user.friends | onlyOnline | More |
user.info | handles | More |
user.ratedList | activeOnly | More |
user.rating | handle | More |
user.status | handle , from , count | More |
To access data, API key must be needed.To generate API and SECRET KEY visit: http://codeforces.com/settings/api
All data return as JSON format.For more details about every data format visit: http://codeforces.com/api/help/objects
This feature and example from npm request pakages. For more have a look : https://github.com/request/request
You can stream responses to a file stream.When json data is huge, you may need this feature.
Codeforces.user.ratedList( parameters, callback ).pipe( fs.createWriteStream('./rateedList.json') );
Also emits response events.
Codeforces.user.ratedList( parameters, function(err, data){
if(err){ //request error }
//data also available here
}).on('data', function(data) {
// decompressed data as it is received
console.log('decoded chunk: ' + data)
})
.on('response', function(response) {
// unmodified http.IncomingMessage object
response.on('data', function(data) {
// compressed data as it is received
console.log('received ' + data.length + ' bytes of compressed data')
});
}).pipe( fs.createWriteStream('./ratedList.json') );