pipl-api 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b7034057d20dee2ed1589888d24b6ae0b70392b
4
- data.tar.gz: 8d511aee71ba4335ab2a953177befd73d8282194
3
+ metadata.gz: c697e18bae4c2053ae0748880ec12f9158a44139
4
+ data.tar.gz: cd14044050efd45485cdd96ad1394aac3dcd4b71
5
5
  SHA512:
6
- metadata.gz: 9fc1f72593508d8019e80b0b998c59606fe1e86d017f45a1f88dacd2f4feee42b9234b6e23e98e8f302acd78a40fe4a894a34ab6c5c5c98d94fb37ee4475de2e
7
- data.tar.gz: 2a3b2bd466848d4bef44e20e5df265b71c34bcf4825a7e49b5bb32e965cc8c75a7efaf4ce83f2948810de146c97387cadfef9665b9a3b4b00d1e58ad0f237030
6
+ metadata.gz: d72a343c5f3da146421e3a611ccf2dbc3477ade8a23865c806d8d291f44ce010525712b77cf671151bc6e58963265b7031f4284b88e105cabc26c6d8ea017a22
7
+ data.tar.gz: c7762721133551f86bc215eaa66d12f8a8a7286947ddcdbc46849a0c46dcb51bcc10091f59ea63e55a81bbeec01fcf6d648f2d3127f7ef88a9d939f7a0d95ee8
@@ -1,5 +1,8 @@
1
1
  require "rest_client"
2
+ require "multi_json"
3
+
2
4
  require_relative "pipl/api"
5
+ require_relative "pipl/client"
3
6
 
4
7
  module Pipl
5
8
  # Your code goes here...
@@ -1,13 +1,9 @@
1
1
  require_relative "api/version"
2
2
  require_relative "api/request"
3
+ require_relative "api/response"
4
+
3
5
  module Pipl
4
6
  module API
5
- def self.api_key=(value)
6
- @api_key = value
7
- end
8
7
 
9
- def self.api_key
10
- @api_key
11
- end
12
8
  end
13
9
  end
@@ -1,5 +1,4 @@
1
1
  require_relative "request/name"
2
- require_relative "request/get"
3
2
 
4
3
  module Pipl
5
4
  module API
@@ -19,7 +18,7 @@ module Pipl
19
18
  end
20
19
 
21
20
  def call(verb)
22
- self.class.const_get(verb.capitalize).new(uri).call!(parameters)
21
+ RestClient.send(verb, uri, params: @parameters)
23
22
  end
24
23
 
25
24
  def uri
@@ -29,10 +28,6 @@ module Pipl
29
28
  def protocol
30
29
  "#{@protocol}://"
31
30
  end
32
-
33
- def parameters
34
- Pipl::API.api_key ? @parameters.merge(key: Pipl::API.api_key) : @parameters
35
- end
36
31
  end
37
32
  end
38
33
  end
@@ -4,14 +4,17 @@ module Pipl
4
4
  class Name
5
5
  def initialize(raw, options = {})
6
6
  @raw = raw
7
+ @options = options
7
8
  end
8
9
 
9
10
  def call
10
11
  request.call("get")
11
12
  end
12
13
 
14
+ private
15
+
13
16
  def request
14
- Request.new("name", raw_name: @raw)
17
+ Request.new("name", raw_name: @raw, key: @options[:key] )
15
18
  end
16
19
  end
17
20
  end
@@ -0,0 +1,27 @@
1
+ require_relative "response/person"
2
+ require_relative "response/name"
3
+ require_relative "response/age"
4
+ require_relative "response/location"
5
+ require_relative "response/gender"
6
+
7
+ module Pipl
8
+ module API
9
+ class Response
10
+ attr_reader :data
11
+ attr_reader :status
12
+ attr_reader :warnings
13
+ attr_reader :person
14
+
15
+ def initialize(raw)
16
+ @data = MultiJson.load(raw)
17
+ @status = @data.delete("@http_status_code")
18
+ @warnings = @data.delete("warnings")
19
+ @person = Person.new(@data)
20
+ end
21
+
22
+ def ok?
23
+ status == 200
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ module Pipl
2
+ module API
3
+ class Response
4
+ class Age
5
+ attr_reader :from, :to
6
+ attr_reader :estimation
7
+
8
+ def initialize(age)
9
+ @from = age["from_age"]
10
+ @to = age["to_age"]
11
+ @estimation = age["estimated_percent"].to_f / 100
12
+ end
13
+
14
+ def to_range
15
+ @from..@to
16
+ end
17
+
18
+ def to_hash
19
+ {
20
+ range: to_range,
21
+ estimation: estimation
22
+ }
23
+ end
24
+ alias_method :to_h, :to_hash
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ module Pipl
2
+ module API
3
+ class Response
4
+ class Gender
5
+ attr_reader :code
6
+ attr_reader :estimation
7
+
8
+ def initialize(gender)
9
+ @code = gender.first
10
+ @estimation = gender.last
11
+ end
12
+
13
+ def to_hash
14
+ {
15
+ code: code,
16
+ estimation: estimation
17
+ }
18
+ end
19
+ alias_method :to_h, :to_hash
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ module Pipl
2
+ module API
3
+ class Response
4
+ class Location
5
+ attr_reader :code, :state, :country
6
+ attr_reader :estimation
7
+
8
+ def initialize(location)
9
+ @code = location["country"]
10
+ if location["display"].include?(",")
11
+ @state = location["display"].split(", ").first
12
+ @country = location["display"].split(", ").last
13
+ else
14
+ @country = location["display"]
15
+ end
16
+ @estimation = location["estimated_percent"].to_f / 100
17
+ end
18
+
19
+ def to_hash
20
+ {
21
+ code: code,
22
+ state: state,
23
+ country: country,
24
+ estimation: estimation
25
+ }
26
+ end
27
+ alias_method :to_h, :to_hash
28
+
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,27 @@
1
+ module Pipl
2
+ module API
3
+ class Response
4
+ class Name
5
+ attr_reader :first
6
+ attr_reader :middle
7
+ attr_reader :last
8
+
9
+ def initialize(name)
10
+ @first = name["first"]
11
+ @middle = name["middle"]
12
+ @last = name["last"]
13
+ end
14
+
15
+ def to_hash
16
+ {
17
+ first: first,
18
+ middle: middle,
19
+ last: last
20
+ }
21
+ end
22
+ alias_method :to_h, :to_hash
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,44 @@
1
+ module Pipl
2
+ module API
3
+ class Response
4
+ class Person
5
+ attr_reader :name
6
+ attr_reader :full_names
7
+ attr_reader :nicknames
8
+ attr_reader :spellings
9
+ attr_reader :translations
10
+ attr_reader :locations
11
+ attr_reader :ages
12
+ attr_reader :gender
13
+ attr_reader :estimated_world_persons_count
14
+
15
+ def initialize(data)
16
+ @name = Name.new(data["name"])
17
+ @full_names = Name.new(data["full_names"]) unless data["full_names"] == {}
18
+ @nicknames = Name.new(data["nicknames"]) unless data["nicknames"] == {}
19
+ @spellings = Name.new(data["spellings"]) unless data["spellings"] == {}
20
+ @translations = data["translations"] unless data["translations"] == {}
21
+ @gender = Gender.new(data["gender"])
22
+ @locations = data["top_locations"].map { |location| Location.new(location) }
23
+ @ages = data["top_ages"].map { |age| Age.new(age) }
24
+ @estimated_world_persons_count = data["estimated_world_persons_count"]
25
+ end
26
+
27
+ def to_hash
28
+ {
29
+ name: name.to_hash,
30
+ full_names: full_names.to_hash,
31
+ nicknames: nicknames.to_hash,
32
+ spellings: spellings.to_hash,
33
+ translations: translations,
34
+ gender: gender.to_hash,
35
+ locations: locations.map(&:to_hash),
36
+ ages: ages.map(&:to_hash),
37
+ estimated_world_persons_count: estimated_world_persons_count
38
+ }
39
+ end
40
+ alias_method :to_h, :to_hash
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,5 +1,5 @@
1
1
  module Pipl
2
2
  module API
3
- VERSION = "1.0.0"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -0,0 +1,15 @@
1
+ require_relative "client/name"
2
+
3
+ module Pipl
4
+ class Client
5
+ attr_reader :key
6
+
7
+ def initialize(key)
8
+ @key = key
9
+ end
10
+
11
+ def name(raw_name)
12
+ Name.new(self, raw_name).response
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module Pipl
2
+ class Client
3
+ class Name
4
+ def initialize(client, name)
5
+ @request = API::Request::Name.new(name, key: client.key)
6
+ end
7
+
8
+ def response
9
+ @response ||= API::Response.new(@request.call)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -37,9 +37,7 @@ class TestPiplAPIRequest < Minitest::Test
37
37
  end
38
38
 
39
39
  def test_call
40
- get = MiniTest::Mock.new
41
- get.expect :call!, "foo", [{}]
42
- Pipl::API::Request::Get.stub :new, get do
40
+ RestClient.stub :get, "foo" do
43
41
  expected = "foo"
44
42
  actual = @request.call("get")
45
43
  assert_equal(expected, actual)
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pipl-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kurtis Rainbolt-Greene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-31 00:00:00.000000000 Z
11
+ date: 2013-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: multi_json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rest-client
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -158,15 +172,21 @@ executables:
158
172
  extensions: []
159
173
  extra_rdoc_files: []
160
174
  files:
161
- - lib/pipl/api/request/get.rb
162
175
  - lib/pipl/api/request/name.rb
163
176
  - lib/pipl/api/request.rb
177
+ - lib/pipl/api/response/age.rb
178
+ - lib/pipl/api/response/gender.rb
179
+ - lib/pipl/api/response/location.rb
180
+ - lib/pipl/api/response/name.rb
181
+ - lib/pipl/api/response/person.rb
182
+ - lib/pipl/api/response.rb
164
183
  - lib/pipl/api/version.rb
165
184
  - lib/pipl/api.rb
185
+ - lib/pipl/client/name.rb
186
+ - lib/pipl/client.rb
166
187
  - lib/pipl-api.rb
167
188
  - lib/pipl.rb
168
189
  - test/helper.rb
169
- - test/lib/pipl/api/request/get_test.rb
170
190
  - test/lib/pipl/api/request_test.rb
171
191
  - test/lib/pipl/api/version_test.rb
172
192
  - test/lib/pipl/api_test.rb
@@ -198,7 +218,6 @@ specification_version: 4
198
218
  summary: An interface for the Pipl API
199
219
  test_files:
200
220
  - test/helper.rb
201
- - test/lib/pipl/api/request/get_test.rb
202
221
  - test/lib/pipl/api/request_test.rb
203
222
  - test/lib/pipl/api/version_test.rb
204
223
  - test/lib/pipl/api_test.rb
@@ -1,19 +0,0 @@
1
- module Pipl
2
- module API
3
- class Request
4
- class Get
5
- def initialize(uri)
6
- @uri = uri
7
- end
8
-
9
- def call!(parameters = {})
10
- begin
11
- RestClient.get(@uri, params: parameters)
12
- rescue => e
13
- raise e.response
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,15 +0,0 @@
1
- require "helper"
2
-
3
- class TestPiplAPIRequestGet < Minitest::Test
4
- def setup
5
- @get = Pipl::API::Request::Get.new("http://www.foo.com/var")
6
- end
7
-
8
- def test_call!
9
- expected = "http://www.foo.com/var"
10
- RestClient.stub :get, "http://www.foo.com/var" do
11
- actual = @get.call!
12
- assert_equal(expected, actual)
13
- end
14
- end
15
- end