Nested Parenthetical Madness

    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.

    Install

    npm i sypexgeo-vyvid

    DownloadsWeekly Downloads

    2

    Version

    0.2.9

    License

    none

    Unpacked Size

    2.7 MB

    Total Files

    71

    Last publish

    Collaborators

    • vsuharnikov