@@ -8,14 +8,18 @@ var _ipgeolocation = function() {
88 var tz = "" ;
99 var latitude = "" ;
1010 var longitude = "" ;
11+ var geolocationEndpoint = "ipgeo" ;
12+ var timezoneEndpoint = "timezone" ;
13+ var geolocationResponseName = "_ipgeolocation_geolocation" ;
14+ var timezoneResponseName = "_ipgeolocation_timezone" ;
1115
1216 function request ( subUrl , callback , apiKey = "" ) {
1317 if ( useSessionStorage ) {
14- if ( subUrl == "ipgeo" && sessionStorage . getItem ( "_ipGeolocation" ) && callback ) {
15- callback ( JSON . parse ( sessionStorage . getItem ( "_ipGeolocation" ) ) ) ;
18+ if ( subUrl == geolocationEndpoint && sessionStorage . getItem ( geolocationResponseName ) && callback ) {
19+ callback ( JSON . parse ( sessionStorage . getItem ( geolocationResponseName ) ) ) ;
1620 return ;
17- } else if ( subUrl == "timezone" && sessionStorage . getItem ( "_ipTimeZone" ) && callback ) {
18- callback ( JSON . parse ( sessionStorage . getItem ( "_ipTimeZone" ) ) ) ;
21+ } else if ( subUrl == timezoneEndpoint && sessionStorage . getItem ( timezoneResponseName ) && callback ) {
22+ callback ( JSON . parse ( sessionStorage . getItem ( timezoneResponseName ) ) ) ;
1923 return ;
2024 }
2125 }
@@ -55,32 +59,36 @@ var _ipgeolocation = function() {
5559 urlParameters = addUrlParameter ( urlParameters , "lat" , latitude ) ;
5660 urlParameters = addUrlParameter ( urlParameters , "long" , longitude ) ;
5761 }
58-
59- $ . ajax ( {
60- async : asyncCall ,
61- method : "GET" ,
62- url : "https://api.ipgeolocation.io/" . concat ( subUrl , urlParameters , "" ) ,
63- contentType : "application/json" ,
64- dataType : "json" ,
65- success : function ( result , status , xhr ) {
66- if ( useSessionStorage ) {
67- if ( subUrl == "ipgeo" ) {
68- sessionStorage . setItem ( "_ipGeolocation" , JSON . stringify ( result ) ) ;
69- } else if ( subUrl == "timezone" ) {
70- sessionStorage . setItem ( "_ipTimeZone" , JSON . stringify ( result ) ) ;
62+
63+ var httpRequest ;
64+
65+ if ( window . XMLHttpRequest ) {
66+ httpRequest = new XMLHttpRequest ( ) ;
67+ } else if ( window . ActiveXObject ) {
68+ httpRequest = new ActiveXObject ( "Microsoft.XMLHTTP" ) ;
69+ }
70+
71+ httpRequest . onreadystatechange = function ( ) {
72+ if ( this . readyState == 4 ) {
73+ if ( useSessionStorage && this . status == 200 ) {
74+ key = geolocationResponseName ;
75+
76+ if ( subUrl == timezoneEndpoint ) {
77+ key = timezoneResponseName ;
7178 }
79+
80+ sessionStorage . setItem ( key , this . responseText ) ;
7281 }
7382
7483 if ( callback ) {
75- callback ( result ) ;
76- }
77- } ,
78- error : function ( xhr , status , error ) {
79- if ( callback ) {
80- callback ( JSON . parse ( xhr . responseText ) ) ;
84+ callback ( JSON . parse ( this . responseText ) ) ;
8185 }
8286 }
83- } ) ;
87+ } ;
88+
89+ httpRequest . open ( "GET" , "https://api.ipgeolocation.io/" . concat ( subUrl , urlParameters , "" ) , asyncCall ) ;
90+ httpRequest . setRequestHeader ( "Accept" , "application/json" ) ;
91+ httpRequest . send ( ) ;
8492 }
8593
8694 function addUrlParameter ( parameters , parameterName , parameterValue ) {
@@ -120,10 +128,10 @@ var _ipgeolocation = function() {
120128 longitudeParameter = longitude ;
121129 } ,
122130 getGeolocation : function ( callback , apiKey = "" ) {
123- request ( "ipgeo" , callback , apiKey ) ;
131+ request ( geolocationEndpoint , callback , apiKey ) ;
124132 } ,
125133 getTimezone : function ( callback , apikey = "" ) {
126- request ( "timezone" , callback , apikey ) ;
134+ request ( timezoneEndpoint , callback , apikey ) ;
127135 }
128136 }
129137} ( ) ;
0 commit comments