data_science_theater_3000 0.0.7.1 → 0.0.8

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.
@@ -6,10 +6,14 @@ require "data_science_theater_3000/version"
6
6
  module DataScienceTheater3000
7
7
  # Converts an ip address into a location hash
8
8
  #
9
- # @param [String] ip the ip address to be located
10
- # @return [Hash] hash of location information. Can be passed as input to coordinates2politics
9
+ # @param [Array, String] ip Either an array of ip strings or a single ip address to be located
10
+ # @return [Hash] hash of location information. Singular output can be passed as input to coordinates2politics
11
11
  def self.ip2coordinates ip
12
12
  url = "http://www.datasciencetoolkit.org"
13
+ if ip.class == Array
14
+ ip.each {|i| i.gsub!(",", "%2c") }
15
+ ip = ActiveSupport::JSON.encode(ip)
16
+ end
13
17
  response = Curl::Easy.perform( url + "/ip2coordinates/" + ip ).body_str
14
18
 
15
19
  coordinates = make_hashy(response)
@@ -23,42 +27,49 @@ module DataScienceTheater3000
23
27
  # Converts a street address into a location hash
24
28
  #
25
29
  # @param [String, Array] address as either a single string or array of strings
26
- # @return [Hash] hash of location information. Can be passed as input to coordinates2politics
30
+ # @return [Hash] hash of location information. Singular output can be passed as input to coordinates2politics
27
31
  def self.street2coordinates address
28
32
  url = "http://www.datasciencetoolkit.org"
29
33
  if address.class == String
30
34
  address.gsub!(",", "%2c").gsub!(" ", "+")
31
- response = Curl::Easy.perform( url + "/street2coordinates/" + address ).body_str
32
35
  elsif address.class == Array
33
36
  address.each {|a| a.gsub!(",", "%2c").gsub!(" ", "+") }
34
37
  address = ActiveSupport::JSON.encode(address)
35
- response = Curl::Easy.perform( url + "/street2coordinates/" + address ).body_str
36
38
  end
39
+ response = Curl::Easy.perform( url + "/street2coordinates/" + address ).body_str
40
+
37
41
  coordinates = make_hashy(response)
38
42
  end
39
43
 
40
44
  # Uses latitude,longitude pair to find detailed political information about a location.
41
45
  # Currently supporting a single pair.
42
46
  #
43
- # @param [Hash,String] hash returned from ip2coordinates/street2coordinates or just a string like "33,-86"
47
+ # @param [Hash,String] coords hash returned from ip2coordinates/street2coordinates or just a string like "33,-86"
44
48
  # @return [Array] contains hashes with detailed political information for a location
45
49
  def self.coordinates2politics coords
46
- if coords.class == Hash
47
- coords = coords.keys.map{|k| "#{coords[k]["latitude"]},#{coords[k]["longitude"]}"}.first
48
- end
49
-
50
50
  url = "http://www.datasciencetoolkit.org"
51
+ if coords.class == Hash && coords.keys.count == 1
52
+ coords = coords.keys.map{ |k| "#{coords[k]["latitude"]},#{coords[k]["longitude"]}" }.first
53
+ end
51
54
  coords.gsub!( "," , "%2c" )
52
55
  response = Curl::Easy.perform( url + "/coordinates2politics/" + coords ).body_str
53
56
 
54
- coordinates = make_hashy(response)
57
+ politics = make_hashy(response)
55
58
  end
56
59
 
60
+ # Specify a name or names and return parsed result as well as a best-guess for gender
61
+ #
62
+ # @param [Array, String] name can be array of name strings or a single name
63
+ # @return [Hash] information related to the provided name
57
64
  def self.text2people name
58
- #url = "http://www.datasciencetoolkit.org"
59
- #response = Curl::Easy.perform( url + "/text2people/" + name ).body_str
65
+ url = "http://www.datasciencetoolkit.org"
66
+ name = ActiveSupport::JSON.encode(name)
67
+ c = Curl::Easy.new( url + '/text2people')
68
+ c.multipart_form_post = true
69
+ c.http_post(Curl::PostField.content('body', name))
70
+ response = c.body_str
60
71
 
61
- #person = make_hashy(response)
72
+ person = make_hashy(response)
62
73
  end
63
74
 
64
75
  def self.text2times text
@@ -1,3 +1,3 @@
1
1
  module DataScienceTheater3000
2
- VERSION = "0.0.7.1"
2
+ VERSION = "0.0.8"
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.7.1
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: active_support
16
- requirement: &21456080 !ruby/object:Gem::Requirement
16
+ requirement: &14674740 !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: *21456080
24
+ version_requirements: *14674740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: curb
27
- requirement: &21455500 !ruby/object:Gem::Requirement
27
+ requirement: &14674140 !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: *21455500
35
+ version_requirements: *14674140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &21454620 !ruby/object:Gem::Requirement
38
+ requirement: &14673300 !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: *21454620
46
+ version_requirements: *14673300
47
47
  description: Ruby interface to issue Data Science Toolkit API calls.
48
48
  email:
49
49
  - tad@isotope11.com