1- var _ipgeolocation = function ( ) {
2- var useSessionStorage = false ;
3- var asyncCall = true ;
4- var hostname = false ;
5- var liveHostname = false ;
6- var hostnameFallbackLive = false ;
7- var security = false ;
8- var userAgent = false ;
9- var ipAddress = "" ;
10- var excludes = "" ;
11- var fields = "" ;
12- var lang = "en" ;
13- var tz = "" ;
14- var latitude = "" ;
15- var longitude = "" ;
16- var location = "" ;
17- var geolocationEndpoint = "ipgeo" ;
18- var timezoneEndpoint = "timezone" ;
19- var useragentEndpoint = "user-agent" ;
20- var geolocationResponseName = "_ipgeolocation_geolocation" ;
21- var timezoneResponseName = "_ipgeolocation_timezone" ;
22- var useragentResponseName = "_ipgeolocation_useragent" ;
1+ const _ipgeolocation = function ( ) {
2+ let useSessionStorage = false ;
3+ let asyncCall = true ;
4+ let hostname = false ;
5+ let liveHostname = false ;
6+ let hostnameFallbackLive = false ;
7+ let security = false ;
8+ let userAgent = false ;
9+ let ipAddress = "" ;
10+ let excludes = "" ;
11+ let fields = "" ;
12+ let lang = "en" ;
13+ let tz = "" ;
14+ let latitude = "" ;
15+ let longitude = "" ;
16+ let location = "" ;
17+ const geolocationEndpoint = "ipgeo" ;
18+ const timezoneEndpoint = "timezone" ;
19+ const useragentEndpoint = "user-agent" ;
20+ const geolocationResponseName = "_ipgeolocation_geolocation" ;
21+ const timezoneResponseName = "_ipgeolocation_timezone" ;
22+ const useragentResponseName = "_ipgeolocation_useragent" ;
2323
24- function request ( subUrl , callback , apiKey = "" ) {
24+ async function request ( subUrl , callback , apiKey = "" ) {
2525 if ( useSessionStorage ) {
26- if ( subUrl == geolocationEndpoint && sessionStorage . getItem ( geolocationResponseName ) && callback ) {
26+ if ( subUrl === geolocationEndpoint && sessionStorage . getItem ( geolocationResponseName ) && callback ) {
2727 callback ( JSON . parse ( sessionStorage . getItem ( geolocationResponseName ) ) ) ;
2828 return ;
29- } else if ( subUrl == timezoneEndpoint && sessionStorage . getItem ( timezoneResponseName ) && callback ) {
29+ } else if ( subUrl === timezoneEndpoint && sessionStorage . getItem ( timezoneResponseName ) && callback ) {
3030 callback ( JSON . parse ( sessionStorage . getItem ( timezoneResponseName ) ) ) ;
3131 return ;
32- } else if ( subUrl == useragentEndpoint && sessionStorage . getItem ( useragentResponseName ) && callback ) {
32+ } else if ( subUrl === useragentEndpoint && sessionStorage . getItem ( useragentResponseName ) && callback ) {
3333 callback ( JSON . parse ( sessionStorage . getItem ( useragentResponseName ) ) ) ;
3434 return ;
3535 }
3636 }
3737
38- var urlParameters = "" ;
38+ let urlParameters = "" ;
3939
4040 if ( ! subUrl ) {
41- callback ( JSON . parse ( "{'status': 401, message: 'Given path to IP Geolocation API is not valid'}" ) ) ;
41+ callback ( JSON . parse ( "{'status': 401, ' message' : 'Given path to IP Geolocation API is not valid'}" ) ) ;
4242 return ;
4343 }
4444
@@ -59,8 +59,8 @@ var _ipgeolocation = function() {
5959 }
6060
6161 if ( hostname || security || userAgent ) {
62- var parameterValue = "" ;
63- var hostnameSelected = false ;
62+ let parameterValue = "" ;
63+ let hostnameSelected = false ;
6464
6565 if ( hostname ) {
6666 parameterValue = "hostname" ;
@@ -105,39 +105,50 @@ var _ipgeolocation = function() {
105105 urlParameters = addUrlParameter ( urlParameters , "long" , longitude ) ;
106106 }
107107
108- if ( location ) {
108+ if ( location ) {
109109 urlParameters = addUrlParameter ( urlParameters , "location" , location ) ;
110110 }
111111
112- var httpRequest ;
113-
114- if ( window . XMLHttpRequest ) {
115- httpRequest = new XMLHttpRequest ( ) ;
116- } else if ( window . ActiveXObject ) {
117- httpRequest = new ActiveXObject ( "Microsoft.XMLHTTP" ) ;
118- }
112+ try {
113+ const response = await fetch ( "https://api.ipgeolocation.io/" . concat ( subUrl , urlParameters , "" ) , {
114+ method : "GET" ,
115+ headers : {
116+ "Accept" : "application/json"
117+ }
118+ } ) ;
119+ const json = await response . json ( ) ;
119120
120- httpRequest . onreadystatechange = function ( ) {
121- if ( this . readyState == 4 ) {
122- if ( useSessionStorage && this . status == 200 ) {
123- key = geolocationResponseName ;
121+ if ( ! response . ok ) {
122+ if ( callback ) {
123+ callback ( JSON . parse ( "{'status': " . concat ( response . status , ", 'message': '" , json . message , "'}" ) ) ) ;
124+ } else {
125+ console . error ( "status:" , response . status , json ) ;
126+ }
127+ }
124128
125- if ( subUrl == timezoneEndpoint ) {
126- key = timezoneResponseName ;
127- }
129+ if ( useSessionStorage ) {
130+ key = geolocationResponseName ;
128131
129- sessionStorage . setItem ( key , this . responseText ) ;
130- }
131-
132- if ( callback ) {
133- callback ( JSON . parse ( this . responseText ) ) ;
132+ if ( subUrl === timezoneEndpoint ) {
133+ key = timezoneResponseName ;
134+ } else if ( subUrl === useragentEndpoint ) {
135+ key = useragentResponseName ;
134136 }
137+
138+ sessionStorage . setItem ( key , JSON . stringify ( json ) ) ;
135139 }
136- } ;
137140
138- httpRequest . open ( "GET" , "https://api.ipgeolocation.io/" . concat ( subUrl , urlParameters , "" ) , asyncCall ) ;
139- httpRequest . setRequestHeader ( "Accept" , "application/json" ) ;
140- httpRequest . send ( ) ;
141+ if ( callback ) {
142+ callback ( json ) ;
143+ }
144+ } catch ( error ) {
145+ console . error ( error ) ;
146+
147+ if ( callback ) {
148+ callback ( JSON . parse ( "{'status': 400, 'message': 'Something went wrong while query ipgeolocation.io API. If the error persists, contact us at support@ipgeolocation.io'}" ) ) ;
149+ }
150+ }
151+
141152 }
142153
143154 function addUrlParameter ( parameters , parameterName , parameterValue ) {
0 commit comments