Unofficial Sypex Geo API bindings for Node.JS.
The latest version works only with:
* SypexGeo 2.2! See changelog.
* SxGeoCity_utf8 (See Gruntfile.js)
Warning! This package does not compile on Windows.
- g++ >= 4.8 for supporting C++11.
$ npm i --save sypexgeo-vyvid
var sypex = require('sypexgeo-vyvid');
var geoDb = new sypex.Geo('/a/full/path/to/the/SypexGeoCity.dat');
var location = geoDb.find('46.148.53.103');
console.log(JSON.stringify(location, null, ' '));
Creates an instance.
var geoDb = new sypex.Geo('/var/www/geo/SypexGeoCity.dat');
- {String} filePath - A full path to the SypexGeo DB file.
- [deprecated] {Number} mode - Specifies a behaviour. Available only SXGEO_MEMORY. It will be removed in 0.3.0
The mode is always SXGEO_BATCH | SXGEO_MEMORY regardless of arguments you pass in.
Looks up for a location by its IP.
var location = geoDb.find('46.148.53.103');
console.log(JSON.stringify(location, null, ' '));
/** Output:
{
"latitude": 55.39485,
"longitude": 43.83992,
"country": {
"id": 185,
"iso": "RU",
"name": {
"en": "Russia",
"ru": "Россия"
}
},
"region": {
"id": 559838,
"iso": "RU-NIZ",
"name": {
"en": "Nizhegorodskaya Oblast'",
"ru": "Нижегородская область"
}
},
"city": {
"id": 580724,
"name": {
"en": "Arzamas",
"ru": "Арзамас"
}
}
}
**/
- {String} ip - The IP-address, for example: 46.148.53.103.
- {Object, null} - null if the database hasn't a location with a specified ip.
An object describes a found location:
- {Number} longitude - 5 digits (e.g., 55.39485) after the decimal point if the city is detected. Otherwise, 2 (e.g. 51.5)
- {Number} latitude
- {Object} country
- {Number} id
- {String} iso
- {Object} name
- {String} en
- {String} ru
- [optional] {Object} region - The information about a region. Omitted if wasn't detected
- {Number} id
- {String} iso
- {Object} name
- {String} en
- {String} ru
- [optional] {Object} city - The information about a city. Omitted if wasn't detected
- {Number} id
- {Object} name
- {String} en
- {String} ru
Get a country ISO (3166-1 alpha-2) by its IP.
var location = geoDb.getCountryIso('46.148.53.103');
console.log(location); // Output: RU
- {String} ip - The IP-address, for example: 46.148.53.103.
The method will be removed in 0.3.0.
var city = geoDb.getCityFull('46.148.53.103');
console.log(JSON.stringify(city, null, ' '));
/** Output:
{
"region": "Нижегородская область",
"country": "RU",
"name": "Арзамас",
"latitude": 55.39485,
"longitude": 43.83992
}
*/
The method will be removed in 0.3.0.
Alias to getCity.
The method will be removed in 0.3.0.
alias to getCountryIso.
grunt test
- run tests. Downloads a base if it necessary. At this time we have only JS-tests :)grunt cpplint
- check a cpp code for some rules.
-
Please check your code by the command:
grunt cpplint
-
If you need a manual build, then run:
npm run-script configure &&\ npm run-script build &&\ npm run-script test
- Install cmake:
- macOS:
brew install cmake
- Install dependencies:
npm i
if you want to updatepackage-lock.json
;npm ci
if not.
cmake CMakeLists.txt &&\
make &&\
./sypexgeo_vyvid
You will see the output:
=== City at 77.50.211.86 ===
Longitude: 100
Latitude: 60
Country id: 185
Country ISO: RU
Russian country name: Россия
English country name: Russia
Region id: 0
Region ISO:
Russian region name:
English region name:
City id: 0
Russian city name:
English city name:
...
Works with SypexGeo 2.2.
- [-] The fips field has been removed (removed from a database);
- [+] The find and getCountryIso methods have been added;
- [!] The getCountry, getCity and getCityFull now is deprecated;
- [!] Completely rewritten code;
- [!] Requires GCC 4.8.
Works with SypexGeo 2.1.
- 0.1.1 - Ported to Nan
Copyright by Vyatcheslav Suharnikov and contributors.
See contributors list in AUTHORS.
Licensed under the MIT license, see license text in LICENSE file.