data_science_theater_3000 0.0.5 → 0.0.6

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.
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