https://github.com/ahmed-dinar/codeforces-api-node
Codeforces API Client Library for Node.js
https://github.com/ahmed-dinar/codeforces-api-node
codeforces codeforces-api
Last synced: about 2 months ago
JSON representation
Codeforces API Client Library for Node.js
- Host: GitHub
- URL: https://github.com/ahmed-dinar/codeforces-api-node
- Owner: ahmed-dinar
- License: mit
- Created: 2016-09-29T18:10:42.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-10-27T14:01:02.000Z (over 1 year ago)
- Last Synced: 2025-03-25T12:12:44.772Z (2 months ago)
- Topics: codeforces, codeforces-api
- Language: JavaScript
- Size: 23.4 KB
- Stars: 3
- Watchers: 0
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NodeJS Client Library for [Codeforces API](http://codeforces.com/api/help)
[](https://travis-ci.org/ahmed-dinar/codeforces-api-node)
[](https://coveralls.io/github/ahmed-dinar/codeforces-api-node?branch=master)
[](https://badge.fury.io/js/codeforces-api)
[](https://david-dm.org/ahmed-dinar/codeforces-api-node)codeforces-api-node is a simple NodeJS library for Codeforces Api with streaming support.
## Install
```
$ npm install codeforces-api
```## Usage
codeforces-api-node supports both ES5 and ES6.
#### Basic
```javascript
//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 );
```#### Usage
```javascript
Codeforces.user.rating({ handle: 'user_handle' } , function (err, data) {if (err) {
//handle error and return
}//use data
});
```### Methods & Parameters
>Full description of the API can be found on : [Official API Doc](http://codeforces.com/api/help)
| Method | Parameters | Description |
| ----------------------- | ------------------------------------------------------------ |:-------------------------------------------------------------------:|
| blogEntry.comments | *blogEntryId | [More](http://codeforces.com/api/help/methods#blogEntry.comments) |
| blogEntry.view | *blogEntryId | [More](http://codeforces.com/api/help/methods#blogEntry.view) |
| contest.hacks | contestId | [More](http://codeforces.com/api/help/methods#contest.hacks) |
| contest.list | gym | [More](http://codeforces.com/api/help/methods#contest.list) |
| contest.ratingChanges | *contestId | [More](http://codeforces.com/api/help/methods#contest.ratingChanges) |
| contest.standings | *contestId , from , count , handles , room , showUnofficial | [More](http://codeforces.com/api/help/methods#contest.standings) |
| contest.status | *contestId , handle , from , count | [More](http://codeforces.com/api/help/methods#contest.status) |
| problemset.problems | tags | [More](http://codeforces.com/api/help/methods#problemset.problems ) |
| problemset.recentStatus | *count | [More](http://codeforces.com/api/help/methods#problemset.recentStatus) |
| recentActions | *maxCount | [More](http://codeforces.com/api/help/methods#recentActions) |
| user.blogEntries | *handle | [More](http://codeforces.com/api/help/methods#user.blogEntries) |
| user.friends | onlyOnline | [More](http://codeforces.com/api/help/methods#user.friends) |
| user.info | *handles | [More](http://codeforces.com/api/help/methods#user.info) |
| user.ratedList | activeOnly | [More](http://codeforces.com/api/help/methods#user.ratedList) |
| user.rating | *handle | [More](http://codeforces.com/api/help/methods#user.rating) |
| user.status | *handle , from , count | [More](http://codeforces.com/api/help/methods#user.status) |
> *required parameters#### Note
**handles** and **tags** can be multiple.There are two different ways to set:
1. Semicilon-separated string:```javascript
tags: 'greedy;dp;graphs'
```2. As array:
```javascript
tags: ['greedy','dp','graphs']
```## Authorization
Although most of the method of the API supports anonymously request, ```codeforces-api-node``` does not allow anonymous request yet.To access API data, must set API and SECRET key before calling methods.To generate API and SECRET KEY visit: [API Settings](http://codeforces.com/settings/api)
## Return Data
All data return in JSON format.For full description of data format visit: [Return Objects](http://codeforces.com/api/help/objects)
## Streaming
>
> This feature and example from npm **request** package. For more have a look : [Request Package Doc](https://github.com/request/request)
>You can stream responses to a file stream.When json data is huge, you may need this feature.
```javascript
Codeforces.user.ratedList( parameters, callback )
.pipe( fs.createWriteStream('./rateedList.json') );//version >= 1.0.2 (with or without callback)
Codeforces.user.ratedList( parameters )
.pipe( fs.createWriteStream('./ratedList.json') );
```Also emits response events.
```javascript
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') );
```## Contributing
Everyone wellcome!
* Create an issue > [Fork](https://github.com/ahmed-dinar/codeforces-api-node/fork) > Create own branch > Commit changes > Push the branch > Creat pull request## Test
Before running test, must set API and SECRET key in environment variable.Keys are:
```javascript
CFK = API Key
CFS = API Secret
```
After setting keys, simply run
```javascript
npm test
```## License
##### MIT © [Ahmed Dinar](https://ahmeddinar.com/)