petfinder-wrap 1.0.3 → 1.0.3.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be970554bc2f200e07d158c15aee17718be772a7
4
- data.tar.gz: e3848ebbf2b22b2e94dde6245162994140034873
3
+ metadata.gz: 5df78740476dae0993d17c929b69c4faa7680e6d
4
+ data.tar.gz: ffd6e169c9c58397d598558a1ec639896d8764e6
5
5
  SHA512:
6
- metadata.gz: 2994500fa6b708894bc31b9abc3f81ba6ae66a91a58c5f0157f869f726577566223a669090062ef2b951156fd976c7178325af7eeba42ebef9fb9d46cfaa2b88
7
- data.tar.gz: 866d9578f2285493f1da00adbf35d9adbc583a80b8f932d42b9ac9941456ea222b36676049ffe7f68c0705c7f59a7672875223713c759047a89d9f8fc96ae153
6
+ metadata.gz: 995c9da8d62ff6291928b1a71bcafe5dafec211b0fb6c8d3c5ce73ffff749d45b7d0e1a7727d35c74dcbc7f5aca44f10ad917ae98a8563ccb30fdcf24afd66bb
7
+ data.tar.gz: 6835b5409fd4b679408721523695235fb6b403780c8a83cf4b380f540db4ec99667f7752105b06b36a65c011941bb86e8c688a44f88acbe9d420e656ed039921
@@ -3,10 +3,11 @@ require_relative 'petfinder/json-mapper'
3
3
  require_relative 'petfinder/pet'
4
4
  require_relative 'petfinder/shelter'
5
5
  require_relative 'petfinder/client'
6
+ require_relative 'petfinder/breed'
6
7
  require 'open-uri'
7
8
 
8
9
  module Petfinder
9
- VERSION = "1.0.3"
10
+ VERSION = "1.0.3.3"
10
11
 
11
12
  class Error < StandardError; end
12
13
 
@@ -0,0 +1,9 @@
1
+ module Petfinder
2
+ class Breed
3
+
4
+ def initialize breed, animal
5
+ @animal = animal
6
+ @name = breed
7
+ end
8
+ end
9
+ end
@@ -17,9 +17,18 @@ module Petfinder
17
17
  find_pet_request = API_BASE_URI + "pet.get?key=#{@api_key}&id=#{id}&format=json"
18
18
  response = open(find_pet_request).read
19
19
  if resp = JSON.parse(response)
20
- Petfinder::Pet.new(resp["petfinder"]["pet"])
20
+ begin
21
+ pet = Petfinder::Pet.new(resp["petfinder"]["pet"])
22
+ if pet.attributes.nil?
23
+ raise Petfinder::Error.new "Invalid response received from API. Check your query"
24
+ else
25
+ pet
26
+ end
27
+ rescue Petfinder::Error => e
28
+ puts e.message
29
+ end
21
30
  else
22
- raise Petfinder::Error "No valid JSON response from API"
31
+ raise Petfinder::Error.new "No valid JSON response from API"
23
32
  end
24
33
  end
25
34
 
@@ -29,8 +38,13 @@ module Petfinder
29
38
  response = open(find_pets_request).read
30
39
  res = []
31
40
  if resp = JSON.parse(response)
32
- resp["petfinder"]["pets"].each do |pet|
33
- res << Petfinder::Pet.new(pet[1][0])
41
+ begin
42
+ resp["petfinder"]["pets"].each do |pet|
43
+ res << Petfinder::Pet.new(pet[1][0])
44
+ end
45
+ rescue NoMethodError => e
46
+ puts e.message
47
+ puts "Invalid response received from API. Check your query"
34
48
  end
35
49
  end
36
50
  res
@@ -40,9 +54,18 @@ module Petfinder
40
54
  get_shelter_request = API_BASE_URI + "shelter.get?key=#{@api_key}&id=#{id}&format=json"
41
55
  response = open(get_shelter_request).read
42
56
  if resp = JSON.parse(response)
43
- Petfinder::Shelter.new(resp["petfinder"]["shelter"])
57
+ shelter = Petfinder::Shelter.new(resp["petfinder"]["shelter"])
58
+ begin
59
+ if shelter.attributes.nil?
60
+ raise Petfinder::Error.new "No pets received from API. Check your query"
61
+ else
62
+ shelter
63
+ end
64
+ rescue Petfinder::Error => e
65
+ puts e.message
66
+ end
44
67
  else
45
- raise Petfinder::Error "No valid JSON response from API"
68
+ raise Petfinder::Error.new "No valid JSON response from API"
46
69
  end
47
70
  end
48
71
 
@@ -51,15 +74,35 @@ module Petfinder
51
74
  response = open(find_shelters_request).read
52
75
  res = []
53
76
  if resp = JSON.parse(response)
54
- resp["petfinder"]["shelters"]["shelter"].each do |shelter|
55
- res << Shelter.new(shelter)
77
+ begin
78
+ resp["petfinder"]["shelters"]["shelter"].each do |shelter|
79
+ res << Shelter.new(shelter)
80
+ end
81
+ rescue NoMethodError => e
82
+ puts e.message
83
+ puts "Invalid response received from API. Check your query"
56
84
  end
57
85
  end
58
86
  res
59
87
  end
60
88
 
89
+ def breeds animal
90
+ list_breeds_request = API_BASE_URI + "breed.list?key=#{@api_key}&animal=#{animal}&format=json"
91
+ response = open(list_breeds_request).read
92
+ res = []
93
+ if resp = JSON.parse(response)
94
+ begin
95
+ resp["petfinder"]["breeds"]["breed"].each do |breed|
96
+ res << Petfinder::Breed.new(breed, resp["petfinder"]["breeds"]["@animal"])
97
+ end
98
+ rescue NoMethodError => e
99
+ puts e.message
100
+ puts "Invalid response received from API. Check your query."
101
+ end
102
+ else
103
+ raise Petfinder::Error "No valid JSON response from API"
104
+ end
105
+ res
106
+ end
61
107
  end
62
-
63
- private
64
-
65
108
  end
@@ -3,7 +3,7 @@ module Petfinder
3
3
  class Pet
4
4
  extend JsonMapper
5
5
 
6
- json_attributes "name", "breed", "age", "size", "id", "shelter_id",
6
+ json_attributes "name", "breed", "age", "size", "id",
7
7
  "description", "shelter_id"
8
8
 
9
9
  attr_reader :attributes, :contact_info
@@ -1,8 +1,11 @@
1
1
  module Petfinder
2
2
  class Shelter
3
3
  extend JsonMapper
4
+
4
5
  json_attributes "country", "name", "phone", "state", "address", "email", "city", "zip", "id"
5
6
 
7
+ attr_reader :attributes
8
+
6
9
  def initialize attributes
7
10
  @attributes = attributes
8
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: petfinder-wrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro De Ona
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-25 00:00:00.000000000 Z
11
+ date: 2017-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -110,6 +110,7 @@ files:
110
110
  - bin/console
111
111
  - bin/setup
112
112
  - lib/petfinder-wrap.rb
113
+ - lib/petfinder/breed.rb
113
114
  - lib/petfinder/client.rb
114
115
  - lib/petfinder/json-mapper.rb
115
116
  - lib/petfinder/pet.rb