data_science_theater_3000 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -13,6 +13,16 @@
13
13
 
14
14
  #### Just ...
15
15
  require "data_science_theater_3000"
16
+
17
+ DataScienceTheater3000.ip2coordinates(ip_string)
18
+ DataScienceTheater3000.file2text(path_to_file) # local files only right now
19
+ DataScienceTheater3000.coordinates2politics(lat_long_string)
20
+ DataScienceTheater3000.street2coordinates(address_string)
21
+
22
+ Or
23
+ dst3k = DataScienceTheater3000
24
+ dst3k.coordinates2politics( dst3k.ip2coordinates(ip_string) )
25
+ dst3k.coordinates2politics( dst3k.street2coordinates(address_string) )
16
26
 
17
27
  ## Contributing
18
28
 
@@ -7,18 +7,23 @@ module DataScienceTheater3000
7
7
  # Converts an ip address into a location hash
8
8
  #
9
9
  # @param [String] ip the ip address to be located
10
- # @return [Hash] key is the ip string passed in as parameter, value is a hash of location information.
10
+ # @return [Hash] hash of location information. Can be passed as input to coordinates2politics
11
11
  def self.ip2coordinates ip
12
12
  url = "http://www.datasciencetoolkit.org"
13
13
  response = Curl::Easy.perform( url + "/ip2coordinates/" + ip ).body_str
14
14
 
15
15
  coordinates = make_hashy(response)
16
+ # Account for satellite provider or anonymous proxy
17
+ if coordinates.invert.keys.include?(nil)
18
+ coordinates[ip] = { :longitude => "unknown", :latitude => "unknown", :country => "unknown", :region => "unknown", :postal_code => "unknown" }
19
+ end
20
+ coordinates
16
21
  end
17
22
 
18
23
  # Converts a street address into a location hash
19
24
  #
20
25
  # @param [String] address the address to be located
21
- # @return [Hash] key is the address string passed in as a paremeter, value is a hash of location information
26
+ # @return [Hash] hash of location information. Can be passed as input to coordinates2politics
22
27
  def self.street2coordinates address
23
28
  url = "http://www.datasciencetoolkit.org"
24
29
  address.gsub!( "," , "%2c" )
@@ -31,9 +36,13 @@ module DataScienceTheater3000
31
36
  # Uses latitude,longitude pair to find detailed political information about a location.
32
37
  # Currently supporting a single pair.
33
38
  #
34
- # @param [String] "latitude,longitude"
35
- # @return [Array] Array containing hashes with detailed political information about a location
36
- def self.coordinates2politics coords
39
+ # @param [String,Hash] coords "lat,long" or the hash returned from ip2coordinates/street2coordinates
40
+ # @return [Array] contains hashes with detailed political information for a location
41
+ def self.coordinates2politics coords
42
+ if coords.class == Hash
43
+ coords = coords.keys.map{|k| "#{coords[k]["latitude"]},#{coords[k]["longitude"]}"}.first
44
+ end
45
+
37
46
  url = "http://www.datasciencetoolkit.org"
38
47
  coords.gsub!( "," , "%2c" )
39
48
  response = Curl::Easy.perform( url + "/coordinates2politics/" + coords ).body_str
@@ -64,6 +73,9 @@ module DataScienceTheater3000
64
73
  # @param [String] file_path
65
74
  # @return [String] text discerned from image
66
75
  def self.file2text file_path
76
+ file_reg = /([^\s]+(\.(?i)(jpg|png|gif|bmp))$)/
77
+ raise "Does not look like path to a file: #{file_path}" if !file_reg.match(file_path)
78
+ raise "Support paths to images hosted remotely soon" if file_path.include?('http:')
67
79
  url = "http://www.datasciencetoolkit.org"
68
80
  c = Curl::Easy.new( url + '/file2text')
69
81
  c.multipart_form_post = true
@@ -72,7 +84,6 @@ module DataScienceTheater3000
72
84
  response = c.body_str
73
85
  end
74
86
 
75
-
76
87
  def self.make_hashy response
77
88
  ActiveSupport::JSON.decode(response)
78
89
  end
@@ -1,3 +1,3 @@
1
1
  module DataScienceTheater3000
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_science_theater_3000
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-20 00:00:00.000000000Z
12
+ date: 2012-01-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: active_support
16
- requirement: &20685060 !ruby/object:Gem::Requirement
16
+ requirement: &13277320 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20685060
24
+ version_requirements: *13277320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: curb
27
- requirement: &20684140 !ruby/object:Gem::Requirement
27
+ requirement: &13276660 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *20684140
35
+ version_requirements: *13276660
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &20683500 !ruby/object:Gem::Requirement
38
+ requirement: &13275860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *20683500
46
+ version_requirements: *13275860
47
47
  description: Ruby interface to issue Data Science Toolkit API calls.
48
48
  email:
49
49
  - tad@isotope11.com