sypexgeo-vyvid

0.2.9 • Public • Published

Unofficial Sypex Geo API bindings for Node.JS.

The latest version works only with:
* SypexGeo 2.2! See changelog.
* SxGeoCity_utf8 (See Gruntfile.js)

Getting Started

Warning! This package does not compile on Windows.

Requirements

  • g++ >= 4.8 for supporting C++11.

Setup

$ npm i --save sypexgeo-vyvid

Using

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, '  '));

Documentation

sypex.Geo

Creates an instance.

var geoDb = new sypex.Geo('/var/www/geo/SypexGeoCity.dat');

Parameters

  1. {String} filePath - A full path to the SypexGeo DB file.
  2. [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.

find

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": "Арзамас"
    }
  }
**/

Parameters

  • {String} ip - The IP-address, for example: 46.148.53.103.

Returns

  • {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

getCountryIso

Get a country ISO (3166-1 alpha-2) by its IP.

var location = geoDb.getCountryIso('46.148.53.103');
 
console.log(location); // Output: RU

Parameters

  • {String} ip - The IP-address, for example: 46.148.53.103.

[deprecated] getCity

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
}
*/

[deprecated] getCityFull

The method will be removed in 0.3.0.

Alias to getCity.

[deprecated] getCountry

The method will be removed in 0.3.0.

alias to getCountryIso.

Grunt commands

  • 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.

Contributing

  • 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

Local development

  1. Install cmake:
  • macOS: brew install cmake
  1. Install dependencies:
  • npm i if you want to update package-lock.json;
  • npm ci if not.

How to check a CPP version

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:
...

Changelog

0.2.*

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.

0.1.*

Works with SypexGeo 2.1.

  • 0.1.1 - Ported to Nan

License

Copyright by Vyatcheslav Suharnikov and contributors.

See contributors list in AUTHORS.

Licensed under the MIT license, see license text in LICENSE file.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.2.9
    0
    • latest

Version History

Package Sidebar

Install

npm i sypexgeo-vyvid

Weekly Downloads

0

Version

0.2.9

License

none

Unpacked Size

2.7 MB

Total Files

71

Last publish

Collaborators

  • vsuharnikov