Node.js client library for the Tor Onionoo API
Promise based client library for the Tor Onionoo API. Includes DB agnostic caching.
npm install --save onionoo
const Onionoo = require('onionoo');
const onionoo = new Onionoo();
// Get top 10 relays
const query = {
limit: 10,
running: true,
order: '-consensus_weight'
};
onionoo.summary(query).then(response => {
console.log(response.body)
// {
// version:'3.1',
// relays_published:'2016-12-23 09:00:00',
// relays:[
// [Object],
// [Object],
// [Object],
// [Object],
// [Object],
// [Object],
// [Object],
// [Object],
// [Object],
// [Object]
// ],
// bridges_published:'2016-12-23 07:41:03',
// bridges:[]
// }
});
You can override the default options when instantiating a new Onionoo
instance:
const Onionoo = require('onionoo');
const onionoo = new Onionoo({
baseUrl: 'https://onionoo.torproject.org',
endpoints: [
'summary',
'details',
'bandwidth',
'weights',
'clients',
'uptime'
],
cache: false
});
By default no cache is used. You can easily cache in memory or to a more scalable store like Redis using Keyv storage adapters.
Cache in memory:
const Onionoo = require('onionoo');
const memory = new Map();
const onionoo = new Onionoo({ cache: memory });
Use persistent Redis cache:
const Onionoo = require('onionoo');
const KeyvRedis = require('@keyv/redis');
const redis = new KeyvRedis('redis://user:pass@localhost:6379');
const onionoo = new Onionoo({ cache: redis });
Returns a new Onionoo
instance
Type: object
Type: string
Default: 'https://onionoo.torproject.org'
String to use as the base url for all API requests.
Type: array
Default: ['summary', 'details', 'bandwidth', 'weights', 'clients', 'uptime']
Array of endpoints to be returned as methods on the Onionoo
instance.
Type: object
Default: false
Keyv storage adapter instance for storing cached data.
Where endpoint is an item from the endpoints array
Returns a Promise that will resolve once the Onionoo API has responded. The response object contains statusCode
, statusMessage
, headers
and body
properties.
Type: object
Query object to be url encoded and appended to the baseUrl
. You can read up on the vast amount of accepted parameters in the Onionoo API docs.
Note: Colons are not url encoded to allow for Onionoo's
key:value
search filters.
Onionite
- Explore the Tor network
MIT © Luke Childs