Search in sources :

Example 11 with Location

use of com.maxmind.geoip2.record.Location in project OpenAM by OpenRock.

the class Adaptive method checkGeoLocation.

protected int checkGeoLocation() {
    int retVal = 0;
    String countryCode;
    if (debug.messageEnabled()) {
        debug.message("{}.checkGeoLocation: GeoLocation database location = {}", ADAPTIVE, geoLocationDatabase);
    }
    DatabaseReader db = getLookupService(geoLocationDatabase);
    if (db == null) {
        debug.error("{}.checkGeoLocation: GeoLocation database lookup returns null", ADAPTIVE);
        return geoLocationScore;
    }
    if (geoLocationValues == null) {
        debug.error("{}.checkGeoLocation: The property '{}' is null", ADAPTIVE, GEO_LOCATION_VALUES);
        return geoLocationScore;
    }
    try {
        countryCode = getCountryCode(db, clientIP);
    } catch (IOException e) {
        if (debug.warningEnabled()) {
            debug.warning("{}.checkGeoLocation: #getCountryCode :: An IO error happened", ADAPTIVE, e);
        }
        return geoLocationScore;
    } catch (GeoIp2Exception e) {
        if (debug.warningEnabled()) {
            debug.warning("{}.checkGeoLocation: #getCountryCode :: An error happened when looking up the IP", ADAPTIVE, e);
        }
        return geoLocationScore;
    }
    if (debug.messageEnabled()) {
        debug.message("{}.checkGeoLocation: {} returns {}", ADAPTIVE, clientIP, countryCode);
    }
    StringTokenizer st = new StringTokenizer(geoLocationValues, "|");
    while (st.hasMoreTokens()) {
        if (countryCode.equalsIgnoreCase(st.nextToken())) {
            if (debug.messageEnabled()) {
                debug.message("{}.checkGeoLocation: Found Country Code : {}", ADAPTIVE, countryCode);
            }
            retVal = geoLocationScore;
            break;
        }
    }
    if (!geoLocationInvert) {
        retVal = geoLocationScore - retVal;
    }
    return retVal;
}
Also used : StringTokenizer(java.util.StringTokenizer) DatabaseReader(com.maxmind.geoip2.DatabaseReader) IOException(java.io.IOException) GeoIp2Exception(com.maxmind.geoip2.exception.GeoIp2Exception)

Example 12 with Location

use of com.maxmind.geoip2.record.Location in project GNS by MobilityFirst.

the class ActiveNonBlockingQuerier method getLocations.

@Override
public ScriptObjectMirror getLocations(ScriptObjectMirror ipList) throws ActiveException {
    // convert ipList to a JSONArray
    JSONArray arr = null;
    try {
        arr = new JSONArray("[" + ipList.callMember("toString") + "]");
    } catch (JSONException e) {
        e.printStackTrace();
        throw new ActiveException(e.getMessage());
    }
    //System.out.println(">>>>>>>>>>>> The query is "+arr.toString());
    // resolve ip one by one
    JSONObject obj = new JSONObject();
    for (int i = 0; i < arr.length(); i++) {
        try {
            String ip = arr.getString(i);
            CityResponse loc = GeoIPUtils.getLocation_City(ip, dbReader);
            if (loc != null) {
                JSONObject value = new JSONObject();
                value.put("latitude", loc.getLocation().getLatitude());
                value.put("longitude", loc.getLocation().getLongitude());
                // continent of the location
                value.put("continent", loc.getContinent().getCode());
                obj.put(ip, value);
            }
        } catch (JSONException e) {
            continue;
        }
    }
    //System.out.println("The result is "+obj.toString());
    return string2JS(obj.toString());
}
Also used : CityResponse(com.maxmind.geoip2.model.CityResponse) JSONObject(org.json.JSONObject) ActiveException(edu.umass.cs.gnsserver.activecode.prototype.ActiveException) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException)

Example 13 with Location

use of com.maxmind.geoip2.record.Location in project quickutil by quickutil.

the class GeoUtil method geoCodeyByBaidu.

/**
 * 根据经纬度查询地理信息-百度批量
 *
 * @param points-纬度经度数组,下标偶数位为纬度,奇数位为经度,必须成对,最多20条经纬度
 * @return
 */
public static List<GeoDef> geoCodeyByBaidu(List<GeoPoint> points) {
    try {
        if (points.size() > 20)
            return null;
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < points.size(); i++) {
            double[] delta = WGSToGCJPointer(points.get(i).latitude, points.get(i).longitude);
            delta = GCJToBDPointer(delta[0], delta[1]);
            builder.append(delta[0] + "," + delta[1] + "|");
        }
        String queryUrl = String.format("http://api.map.baidu.com/geocoder/v2/?ak=%s&location=%s&output=json&batch=true", baiduKeyIn, URLEncoder.encode(builder.substring(0, builder.length() - 1), "UTF-8"));
        JsonObject object = JsonUtil.toJsonMap(FileUtil.stream2string(HttpUtil.httpGet(queryUrl).getEntity().getContent()));
        JsonArray array = object.getAsJsonArray("areas");
        List<GeoDef> geodefList = new ArrayList<GeoDef>();
        for (int i = 0; i < points.size(); i++) {
            object = array.get(i).getAsJsonObject();
            String country = object.get("country").getAsString();
            if (country.equals("中国"))
                country = "China";
            if (country.equals("England"))
                country = "United Kingdom";
            String countryCode = countryCodeByCountryName(country);
            String countryChinese = countryChineseByCountryCode(countryCode);
            String state = object.get("province").getAsString();
            String stateCode = "";
            if (country.equals("China"))
                stateCode = stateCodeByStateChinese(countryCode, state);
            else
                stateCode = stateCodeByStateName(countryCode, state);
            state = stateNameByStateCode(countryCode, stateCode);
            String stateChinese = stateChineseByStateCode(countryCode, stateCode);
            String city = object.get("city").getAsString();
            String description = object.get("district").getAsString();
            countryCode = (countryCode == null) ? UNKNOWN : countryCode;
            country = (country == null) ? UNKNOWN : country;
            countryChinese = (countryChinese == null) ? UNKNOWN : countryChinese;
            stateCode = (stateCode == null) ? UNKNOWN : stateCode;
            state = (state == null) ? UNKNOWN : state;
            stateChinese = (stateChinese == null) ? UNKNOWN : stateChinese;
            city = (city == null) ? UNKNOWN : city;
            geodefList.add(new GeoDef(points.get(i).latitude, points.get(i).longitude, countryCode, country, countryChinese, stateCode, state, stateChinese, city, description));
        }
        return geodefList;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
Also used : JsonArray(com.google.gson.JsonArray) ArrayList(java.util.ArrayList) JsonObject(com.google.gson.JsonObject) GeoPoint(com.quickutil.platform.def.GeoPoint) GeoDef(com.quickutil.platform.def.GeoDef) UnknownHostException(java.net.UnknownHostException) AddressNotFoundException(com.maxmind.geoip2.exception.AddressNotFoundException)

Example 14 with Location

use of com.maxmind.geoip2.record.Location in project quickutil by quickutil.

the class GeoUtil method geoCodeyByAmap.

/**
 * 根据经纬度查询地理信息-高德中国
 *
 * @param latitude-纬度
 * @param longitude-经度
 * @return
 */
public static GeoDef geoCodeyByAmap(double latitude, double longitude) {
    try {
        double[] delta = WGSToGCJPointer(latitude, longitude);
        String queryUrl = String.format("http://restapi.amap.com/v3/geocode/regeo?output=json&location=%s,%s&key=%s", delta[1], delta[0], amapKeyIn);
        JsonObject object = JsonUtil.toJsonMap(FileUtil.stream2string(HttpUtil.httpGet(queryUrl).getEntity().getContent()));
        String country = object.getAsJsonObject("regeocode").getAsJsonObject("addressComponent").get("country").getAsString();
        if (country.equals("中国"))
            country = "China";
        if (country.equals("England"))
            country = "United Kingdom";
        String city = "";
        if (!object.getAsJsonObject("regeocode").getAsJsonObject("addressComponent").get("city").isJsonArray())
            city = object.getAsJsonObject("regeocode").getAsJsonObject("addressComponent").get("city").getAsString();
        String description = object.getAsJsonObject("regeocode").get("formatted_address").getAsString();
        String countryCode = countryCodeByCountryName(country);
        String countryChinese = countryChineseByCountryCode(countryCode);
        String state = object.get("province").getAsString();
        String stateCode = "";
        if (country.equals("China"))
            stateCode = stateCodeByStateChinese(countryCode, state);
        else
            stateCode = stateCodeByStateName(countryCode, state);
        state = stateNameByStateCode(countryCode, stateCode);
        String stateChinese = stateChineseByStateCode(countryCode, stateCode);
        countryCode = (countryCode == null) ? UNKNOWN : countryCode;
        country = (country == null) ? UNKNOWN : country;
        countryChinese = (countryChinese == null) ? UNKNOWN : countryChinese;
        stateCode = (stateCode == null) ? UNKNOWN : stateCode;
        state = (state == null) ? UNKNOWN : state;
        stateChinese = (stateChinese == null) ? UNKNOWN : stateChinese;
        city = (city == null) ? UNKNOWN : city;
        return new GeoDef(latitude, longitude, countryCode, country, countryChinese, stateCode, state, stateChinese, city, description);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
Also used : JsonObject(com.google.gson.JsonObject) GeoDef(com.quickutil.platform.def.GeoDef) UnknownHostException(java.net.UnknownHostException) AddressNotFoundException(com.maxmind.geoip2.exception.AddressNotFoundException)

Example 15 with Location

use of com.maxmind.geoip2.record.Location in project nifi by apache.

the class IPLookupService method createRecord.

private Record createRecord(final CityResponse city) {
    if (city == null) {
        return null;
    }
    final Map<String, Object> values = new HashMap<>();
    values.put(CitySchema.CITY.getFieldName(), city.getCity().getName());
    final Location location = city.getLocation();
    values.put(CitySchema.ACCURACY.getFieldName(), location.getAccuracyRadius());
    values.put(CitySchema.METRO_CODE.getFieldName(), location.getMetroCode());
    values.put(CitySchema.TIMEZONE.getFieldName(), location.getTimeZone());
    values.put(CitySchema.LATITUDE.getFieldName(), location.getLatitude());
    values.put(CitySchema.LONGITUDE.getFieldName(), location.getLongitude());
    values.put(CitySchema.CONTINENT.getFieldName(), city.getContinent().getName());
    values.put(CitySchema.POSTALCODE.getFieldName(), city.getPostal().getCode());
    values.put(CitySchema.COUNTRY.getFieldName(), createRecord(city.getCountry()));
    final Object[] subdivisions = new Object[city.getSubdivisions().size()];
    int i = 0;
    for (final Subdivision subdivision : city.getSubdivisions()) {
        subdivisions[i++] = createRecord(subdivision);
    }
    values.put(CitySchema.SUBDIVISIONS.getFieldName(), subdivisions);
    return new MapRecord(CitySchema.GEO_SCHEMA, values);
}
Also used : MapRecord(org.apache.nifi.serialization.record.MapRecord) HashMap(java.util.HashMap) Subdivision(com.maxmind.geoip2.record.Subdivision) Location(com.maxmind.geoip2.record.Location)

Aggregations

CityResponse (com.maxmind.geoip2.model.CityResponse)12 AddressNotFoundException (com.maxmind.geoip2.exception.AddressNotFoundException)11 Location (com.maxmind.geoip2.record.Location)10 Country (com.maxmind.geoip2.record.Country)9 UnknownHostException (java.net.UnknownHostException)8 City (com.maxmind.geoip2.record.City)7 JsonObject (com.google.gson.JsonObject)6 Continent (com.maxmind.geoip2.record.Continent)6 IOException (java.io.IOException)6 HashMap (java.util.HashMap)6 Postal (com.maxmind.geoip2.record.Postal)5 Subdivision (com.maxmind.geoip2.record.Subdivision)5 GeoIp2Exception (com.maxmind.geoip2.exception.GeoIp2Exception)4 RepresentedCountry (com.maxmind.geoip2.record.RepresentedCountry)4 InetAddress (java.net.InetAddress)4 CountryResponse (com.maxmind.geoip2.model.CountryResponse)3 Traits (com.maxmind.geoip2.record.Traits)3 GeoDef (com.quickutil.platform.def.GeoDef)3 GeoDef (com.quickutil.platform.entity.GeoDef)3 JsonArray (com.google.gson.JsonArray)2