diff options
author | Michael 'Mickey' Lauer <mickey@vanille-media.de> | 2011-01-10 00:39:50 +0100 |
---|---|---|
committer | Michael 'Mickey' Lauer <mickey@vanille-media.de> | 2011-01-10 00:39:50 +0100 |
commit | 8b1e71c1da1d79fc4ad82ff0f6b55b3ec662eb33 (patch) | |
tree | 8b815bbe0056498ba3d0b71543197281be64f901 /fsotdld | |
parent | 78aa68f84579583c96e2a562a83541a514cd8903 (diff) | |
download | cornucopia-8b1e71c1da1d79fc4ad82ff0f6b55b3ec662eb33.tar.gz cornucopia-8b1e71c1da1d79fc4ad82ff0f6b55b3ec662eb33.tar.bz2 cornucopia-8b1e71c1da1d79fc4ad82ff0f6b55b3ec662eb33.zip |
fsotdld: repair provider_location_freegeoip
Diffstat (limited to 'fsotdld')
-rw-r--r-- | fsotdld/src/plugins/provider_location_freegeoip/plugin.vala | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/fsotdld/src/plugins/provider_location_freegeoip/plugin.vala b/fsotdld/src/plugins/provider_location_freegeoip/plugin.vala index 8791796a..3afab98e 100644 --- a/fsotdld/src/plugins/provider_location_freegeoip/plugin.vala +++ b/fsotdld/src/plugins/provider_location_freegeoip/plugin.vala @@ -78,30 +78,38 @@ class Location.FreeGeoIp : FsoTdl.AbstractLocationProvider assert( logger.debug( @"My IP seems to be $ip" ) ); var result = yield FsoFramework.Network.textForUri( servername, queryuri.printf( ip ) ); - if ( result == null || result.length != 3 || result[2].has_prefix( "False" ) ) + if ( ! ( result != null && result.length > 0 ) ) { logger.warning( @"Could not get information for IP $ip from $servername" ); return; } // Usual answer retrieved from this server is something like: - // 52 - // True,85.180.141.230,DE,Germany,05,Hessen,Frankfurt Am Main,,50.1167,8.6833,1.0,2.0 - // 0 + // 85.180.141.230,DE,Germany,05,Hessen,Frankfurt Am Main,,50.1167,8.6833, - var components = result[1].split( "," ); + var components = result[0].split( "," ); var map = new HashTable<string,Variant>( str_hash, str_equal ); - map.insert( "countrycode", components[2] ); - map.insert( "countryname", components[3] ); - map.insert( "regioncode", components[4] ); - map.insert( "regionname", components[5] ); - map.insert( "city", components[6] ); - map.insert( "zipcode", components[7] ); - map.insert( "latitude", components[8].to_double() ); - map.insert( "longitude", components[9].to_double() ); - map.insert( "gmt", components[10] ); - map.insert( "dst", components[11] ); + if ( components.length > 1 ) + map.insert( "countrycode", components[1] ); + if ( components.length > 2 ) + map.insert( "countryname", components[2] ); + if ( components.length > 3 ) + map.insert( "regioncode", components[3] ); + if ( components.length > 4 ) + map.insert( "regionname", components[4] ); + if ( components.length > 5 ) + map.insert( "city", components[5] ); + if ( components.length > 6 ) + map.insert( "zipcode", components[6] ); + if ( components.length > 7 ) + map.insert( "latitude", components[7].to_double() ); + if ( components.length > 8 ) + map.insert( "longitude", components[8].to_double() ); + if ( components.length > 9 ) + map.insert( "gmt", components[9] ); + if ( components.length > 10 ) + map.insert( "dst", components[10] ); this.location( this, map ); } |