@voodoo.io/maxmind-reader
Version:
Simple module to read a maxmind db from S3 a keep it into memory! You can also retrieve the file periodically.
85 lines (63 loc) • 3.18 kB
Markdown
<div align="center">
<b>Maxmind reader</b><br/>
<br/><br/>
</div>
[](https://badge.fury.io/js/%40voodoo.io%2Fmaxmind-reader)
[](https://github.com/VoodooTeam/maxmind-reader/blob/master/LICENSE)
[](https://github.com/VoodooTeam/maxmind-reader/actions?query=workflow%3A%22Node.js+CI%22)
[](https://github.com/VoodooTeam/maxmind-reader/issues)
[](https://github.com/VoodooTeam/maxmind-reader/pulls)
[](https://deepscan.io/dashboard#view=project&tid=12068&pid=15411&bid=307224)
[](https://codecov.io/gh/VoodooTeam/maxmind-reader)

# Purpose
Minimalist, efficient and performance focused module to read a maxmind database.
Basically it can read a maxmind db from S3 and store it into memory.
# Compatibility
**/!\ This module use async/await syntax, this is why you must have node 7.6+.**
Supported and tested : >= 14
| Version | Supported | Tested |
| ------------- |:-------------:|:--------------:|
| 18.x | yes | yes |
| 16.x | yes | yes |
| 14.x | yes | yes |
| 12.x | no | yes |
| 10.x | no | yes |
| 9.x | no | yes |
| 8.x | no | yes |
| >= 7.6 | no | yes |
# Installation
```console
$ npm install @voodoo.io/maxmind-reader --save
```
# Usage
## Instantiation & init
```javascript
const S3Tools = require('@voodoo.io/aws-utils').s3
const s3 = new aws.S3()
const s3Tools = new S3Tools(s3)
const Geoloc = require('@voodoo.io/maxmind-reader')
const geoloc = new Geoloc({
// here is your config
}, s3Tools)
// launch the interval to reload the file
// the delay can be customized as parameter
await geoloc.init()
```
## Basic usage
```javascript
const isoCode = geoloc.getCountry('149.62.156.82')
// isoCode equals 'FR'
```
## Config
| Property | description | Default value |
| -------------------|:----------------------------------------:|:--------------:|
| `S3_GEOLOC_KEY` | '/path/to/GeoLite2-Country.mmdb' | empty |
| `S3_GEOLOC_BUCKET` | Bucket's name | empty |
| `delay` | Interval in ms between two reloading | 3600000 (1hour)|
| `enableScheduler` | Enable the scheduler? | true |
# Test
```console
$ npm test
```
Coverage report can be found in coverage/.