// 20171114155022 // http://js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js.map { "version": 3, "sources": [ "apis/geoip2/v2.1/geoip2.js" ], "names": [ "geoip2", "Lookup", "successCallback", "errorCallback", "options", "type", "this", "geolocation", "hasOwnProperty", "navigator", "exports", "prototype", "returnSuccess", "location", "fillInObject", "objectFromJSON", "returnError", "error", "json", "window", "JSON", "parse", "eval", "fillIns", "country", "city", "obj", "fill", "i", "length", "path", "o", "j", "key", "Object", "defineProperty", "continent", "enumerable", "get", "code", "set", "value", "e", "continent_code", "subdivisions", "most_specific_subdivision", "getGeoIPResult", "param", "request", "that", "uri", "httpParams", "referrer", "protocol", "hostname", "alreadyRan", "appName", "XDomainRequest", "appVersion", "indexOf", "onprogress", "XMLHttpRequest", "encodeURIComponent", "substring", "open", "onload", "status", "responseText", "contentType", "getResponseHeader", "test", "ontimeout", "onerror", "send", "l", "insights" ], "mappings": "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", "file": "geoip2.js", "sourcesContent": [ "/* global HOSTNAME:true, XDomainRequest:true */\n\n/* jshint -W098 */\nvar geoip2 = (function () {\n /* jshint +W098 */\n 'use strict';\n var exports = {};\n\n function Lookup(successCallback, errorCallback, options, type) {\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n /* This is for unit testing geolocation failures */\n this.geolocation = options && options.hasOwnProperty('geolocation') ? options.geolocation : navigator.geolocation;\n this.type = type;\n }\n\n Lookup.prototype.returnSuccess = function (location) {\n if (this.successCallback && typeof this.successCallback === 'function') {\n this.successCallback(this.fillInObject(this.objectFromJSON(location)));\n }\n };\n\n Lookup.prototype.returnError = function (error) {\n if (this.errorCallback && typeof this.errorCallback === 'function') {\n if (!error) {\n error = {\n 'error': 'Unknown error',\n };\n }\n this.errorCallback(error);\n }\n };\n\n Lookup.prototype.objectFromJSON = function (json) {\n if (typeof window.JSON !== 'undefined' && typeof window.JSON.parse === 'function') {\n return window.JSON.parse(json);\n }\n else {\n /* jshint evil:true */\n return eval('(' + json + ')');\n /* jshint evil:false */\n }\n };\n\n var fillIns = {\n 'country': [\n ['continent', 'Object', 'names', 'Object'],\n ['country', 'Object', 'names', 'Object'],\n ['registered_country', 'Object', 'names', 'Object'],\n ['represented_country', 'Object', 'names', 'Object'],\n ['traits', 'Object'],\n ],\n 'city': [\n ['city', 'Object', 'names', 'Object'],\n ['continent', 'Object', 'names', 'Object'],\n ['country', 'Object', 'names', 'Object'],\n ['location', 'Object'],\n ['postal', 'Object'],\n ['registered_country', 'Object', 'names', 'Object'],\n ['represented_country', 'Object', 'names', 'Object'],\n ['subdivisions', 'Array', 0, 'Object', 'names', 'Object'],\n ['traits', 'Object'],\n ],\n };\n Lookup.prototype.fillInObject = function (obj) {\n var fill = this.type === 'country' ? fillIns.country : fillIns.city;\n\n for (var i = 0; i < fill.length; i++) {\n var path = fill[i];\n var o = obj;\n\n for (var j = 0; j < path.length; j += 2) {\n var key = path[j];\n if (!o[key]) {\n o[key] = path[j + 1] === 'Object' ? {} : [];\n }\n o = o[key];\n }\n }\n\n /* jshint camelcase: false */\n try {\n Object.defineProperty(\n obj.continent,\n 'continent_code', {\n enumerable: false,\n get() {\n return this.code;\n },\n set(value) {\n this.code = value;\n },\n });\n }\n catch (e) {\n if (obj.continent.code) {\n obj.continent.continent_code = obj.continent.code;\n }\n }\n\n if (this.type !== 'country') {\n try {\n Object.defineProperty(\n obj,\n 'most_specific_subdivision', {\n enumerable: false,\n get() {\n return this.subdivisions[this.subdivisions.length - 1];\n },\n set(value) {\n this.subdivisions[this.subdivisions.length - 1] = value;\n },\n });\n }\n catch (e) {\n obj.most_specific_subdivision = obj.subdivisions[obj.subdivisions.length - 1];\n }\n }\n /* jshint camelcase: true */\n\n return obj;\n };\n\n Lookup.prototype.getGeoIPResult = function () {\n var that = this,\n param,\n request,\n uri = '//' + (HOSTNAME || 'geoip-js.maxmind.com') + '/geoip/v2.1/' + this.type + '/me?',\n httpParams = {\n referrer: location.protocol + '//' + location.hostname,\n };\n\n if (this.alreadyRan) {\n return;\n }\n this.alreadyRan = 1;\n\n if (navigator.appName === 'Microsoft Internet Explorer' && window.XDomainRequest && navigator.appVersion.indexOf('MSIE 1') === -1) {\n request = new XDomainRequest();\n uri = window.location.protocol + uri;\n // Fix for aborted connection in IE9 under some conditions\n // See http://www.havber.net/2012/04/aborted-xdr-requests-in-ie9/\n request.onprogress = function () {};\n }\n else {\n request = new window.XMLHttpRequest();\n uri = 'https:' + uri;\n }\n\n for (param in httpParams) {\n if (httpParams.hasOwnProperty(param) && httpParams[param]) {\n uri += param + '=' + encodeURIComponent(httpParams[param]) + '&';\n }\n }\n uri = uri.substring(0, uri.length - 1);\n\n request.open('GET', uri, true);\n request.onload = function () {\n if (typeof request.status === 'undefined' || request.status === 200) {\n that.returnSuccess(request.responseText);\n }\n else {\n var contentType = request.hasOwnProperty('contentType') ? request.contentType : request.getResponseHeader('Content-Type');\n\n var error;\n if (/json/.test(contentType) && request.responseText.length) {\n try {\n error = that.objectFromJSON(request.responseText);\n }\n catch (e) {\n error = {\n 'code': 'HTTP_ERROR',\n 'error': 'The server returned a ' + request.status + ' status with an invalid JSON body.',\n };\n }\n }\n else if (request.responseText.length) {\n error = {\n 'code': 'HTTP_ERROR',\n 'error': 'The server returned a ' + request.status + ' status with the following body: ' + request.responseText,\n };\n }\n else {\n error = {\n 'code': 'HTTP_ERROR',\n 'error': 'The server returned a ' + request.status + ' status but either the server did not return a body' + ' or this browser is a version of Internet Explorer that hides error bodies.',\n };\n }\n\n that.returnError(error);\n }\n };\n request.ontimeout = function () {\n that.returnError({\n 'code': 'HTTP_TIMEOUT',\n 'error': 'The request to the GeoIP2 web service timed out.',\n });\n };\n request.onerror = function () {\n that.returnError({\n 'code': 'HTTP_ERROR',\n 'error': 'There was a network error receiving the response from the GeoIP2 web service.',\n });\n };\n request.send(null);\n };\n\n exports.country = function (successCallback, errorCallback, options) {\n var l = new Lookup(successCallback, errorCallback, options, 'country');\n l.getGeoIPResult();\n return;\n };\n\n exports.city = function (successCallback, errorCallback, options) {\n var l = new Lookup(successCallback, errorCallback, options, 'city');\n l.getGeoIPResult();\n return;\n };\n\n exports.insights = function (successCallback, errorCallback, options) {\n var l = new Lookup(successCallback, errorCallback, options, 'insights');\n l.getGeoIPResult();\n return;\n };\n\n return exports;\n}());\n" ] }