ip2kml 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/ip2kml +9 -0
- data/lib/ip2kml.rb +72 -0
- metadata +47 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 270f1a7810e05e40b194421769fc51d6583c87e7
|
4
|
+
data.tar.gz: 6d3f700c91813db9c565786881a3de250b824d06
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e97e474e680767f40704d8e06280766b42f078b4f5cddac35fbf2318925cb5ab82959cc131cc70c44a8614b27758dcf75c35ddc4cafe762401e3863cb023e524
|
7
|
+
data.tar.gz: 6cf63e8035f2b631df4235c5341d66c96a895600d6ebe877053f60f0828f7378c1d69ac33290644c03f0b26f50731cae1a0e5b812b24a4540f0f3970ca1a2a44
|
data/bin/ip2kml
ADDED
data/lib/ip2kml.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
class Ip2kml
|
6
|
+
|
7
|
+
def initialize(ip_list)
|
8
|
+
@geoip_service_base_url = 'http://www.freegeoip.net/json/'
|
9
|
+
@ip_list = ip_list
|
10
|
+
@kml_file_data = String.new # This will get populated with the XML text
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_ip_info(ip_address)
|
14
|
+
# Look up IP information from web service
|
15
|
+
uri = URI.parse(@geoip_service_base_url + ip_address)
|
16
|
+
response = Net::HTTP.get_response(uri)
|
17
|
+
JSON.parse(response.body)
|
18
|
+
end
|
19
|
+
|
20
|
+
def generate_pin_from_ip(ip_address)
|
21
|
+
ip_data = get_ip_info(ip_address)
|
22
|
+
@kml_file_data << <<EOT
|
23
|
+
<Placemark>
|
24
|
+
<name>#{ip_data['ip']}</name>
|
25
|
+
<description>
|
26
|
+
Country code: #{ip_data['country_code']}
|
27
|
+
Country name: #{ip_data['country_name']}
|
28
|
+
Region code: #{ip_data['region_code']}
|
29
|
+
Region name: #{ip_data['region_name']}
|
30
|
+
City: #{ip_data['city']}
|
31
|
+
Zip code: #{ip_data['zip_code']}
|
32
|
+
Time zone: #{ip_data['time_zone']}
|
33
|
+
Latitude: #{ip_data['latitude']}
|
34
|
+
Longitude: #{ip_data['longitude']}
|
35
|
+
Metro code: #{ip_data['metro_code']}
|
36
|
+
</description>
|
37
|
+
<Point>
|
38
|
+
<coordinates>#{ip_data['longitude']},#{ip_data['latitude']},0</coordinates>
|
39
|
+
</Point>
|
40
|
+
</Placemark>
|
41
|
+
EOT
|
42
|
+
end
|
43
|
+
|
44
|
+
def start_kml_file
|
45
|
+
# Header boilerplate of KML file
|
46
|
+
@kml_file_data = <<EOT
|
47
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
48
|
+
<kml xmlns="http://www.opengis.net/kml/2.2">'
|
49
|
+
EOT
|
50
|
+
end
|
51
|
+
|
52
|
+
def finish_kml_file
|
53
|
+
# Footer boilerplate for KML file
|
54
|
+
@kml_file_data << <<EOT
|
55
|
+
</kml> <!-- Auto generated by ip2kml -->
|
56
|
+
EOT
|
57
|
+
end
|
58
|
+
|
59
|
+
def generate_kml_file
|
60
|
+
start_kml_file
|
61
|
+
@ip_list.each do |ip_address|
|
62
|
+
generate_pin_from_ip(ip_address.strip!)
|
63
|
+
end
|
64
|
+
finish_kml_file
|
65
|
+
return
|
66
|
+
end
|
67
|
+
|
68
|
+
def get_kml_file
|
69
|
+
return @kml_file_data
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ip2kml
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- NanoDano
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-11-22 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Generate Google Earth KML files from a list of IP addresses
|
14
|
+
email: nanodano@devdungeon.com
|
15
|
+
executables:
|
16
|
+
- ip2kml
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- bin/ip2kml
|
21
|
+
- lib/ip2kml.rb
|
22
|
+
homepage: http://rubygems.org/gems/ip2kml
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.4.5
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: IP 2 KML
|
46
|
+
test_files: []
|
47
|
+
has_rdoc:
|