petfinder-wrap 1.0.4 → 1.0.4.1

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: b729279226d673ca9c35950e91229ada36f12144
4
- data.tar.gz: 842bc9e61d2313d8e854113a7303302eaaf6c497
3
+ metadata.gz: 422fe5f83754d0ad8cd64a7bf6aa0695d2508da2
4
+ data.tar.gz: 79e329e40b744b16fd525dc3dc083eb989887bf1
5
5
  SHA512:
6
- metadata.gz: ac01f2a16a6a1c322e7532b4d66009f404fac52ef8977e7a976e90fee1fdc42ba2e167eaea1b4f9c4722effd75bc136c069685ff9e0efa7c43454e6b6ce6b189
7
- data.tar.gz: 9514469cc125426604f98511d41eeb216ccaffde63b261037947e1105a830639c0f0e5ac2d8c528ada27d0592c940075b006ac3544fa097a3adf76328b095932
6
+ metadata.gz: 3fc59bed66043a984c75683e5c04ebbf8b9f5fbd1b145886b78e58735a5bff3f37e07adb6af698a9383131a02212f90da142b85a4fb16f782c4067f8351b1444
7
+ data.tar.gz: 6619711f9bee04a2b5069e2e13d0ece25731f79913d1f53dc6a19c12d049b2c6e5974ad2fb71c9489831aafaf8af1bdaed622eaf0b711947869221882249dbf7
@@ -7,7 +7,7 @@ require_relative 'petfinder/breed'
7
7
  require 'open-uri'
8
8
 
9
9
  module Petfinder
10
- VERSION = "1.0.4"
10
+ VERSION = "1.0.4.1"
11
11
 
12
12
  class Error < StandardError; end
13
13
 
@@ -1,9 +1,9 @@
1
1
  module Petfinder
2
2
  class Breed
3
- attr_reader :animal, :name
4
- def initialize breed, animal
5
- @animal = animal
6
- @name = breed
3
+ attr_reader :name
4
+ attr_accessor :animal
5
+ def initialize breed
6
+ @name = breed["$t"]
7
7
  end
8
8
  end
9
9
  end
@@ -36,18 +36,7 @@ module Petfinder
36
36
  find_pets_request = API_BASE_URI + "pet.find?key=#{@api_key}&animal=#{animal}&location=#{zip_code}&output=basic&format=json"
37
37
  # p find_pets_request
38
38
  response = open(find_pets_request).read
39
- res = []
40
- if resp = JSON.parse(response)
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"
48
- end
49
- end
50
- res
39
+ parse_multiple response, "pet"
51
40
  end
52
41
 
53
42
  def get_shelter id
@@ -72,52 +61,23 @@ module Petfinder
72
61
  def get_shelter_pets shelter
73
62
  get_shelter_pets = API_BASE_URI + "shelter.getPets?key=#{@api_key}&id=#{shelter.id}&output=basic&format=json"
74
63
  response = open(get_shelter_pets).read
75
- res = []
76
- if resp = JSON.parse(response)
77
- begin
78
- resp["petfinder"]["pets"]["pet"].each do |pet|
79
- res << Pet.new(pet)
80
- end
81
- rescue NoMethodError => e
82
- puts e.message
83
- puts "Invalid response received from API. Check your query"
84
- end
85
- res
86
- end
64
+ parse_multiple response, "pet"
87
65
  end
88
66
 
89
67
  def find_shelters location
90
68
  find_shelters_request = API_BASE_URI + "shelter.find?key=#{@api_key}&location=#{location}&format=json"
91
69
  response = open(find_shelters_request).read
92
- res = []
93
- if resp = JSON.parse(response)
94
- begin
95
- resp["petfinder"]["shelters"]["shelter"].each do |shelter|
96
- res << Shelter.new(shelter)
97
- end
98
- rescue NoMethodError => e
99
- puts e.message
100
- puts "Invalid response received from API. Check your query"
101
- end
102
- end
103
- res
70
+ parse_multiple response, "shelter"
104
71
  end
105
72
 
106
73
  def breeds animal
107
74
  list_breeds_request = API_BASE_URI + "breed.list?key=#{@api_key}&animal=#{animal}&format=json"
108
75
  response = open(list_breeds_request).read
109
- res = []
110
- if resp = JSON.parse(response)
111
- begin
112
- resp["petfinder"]["breeds"]["breed"].each do |breed|
113
- res << Petfinder::Breed.new(breed["$t"], resp["petfinder"]["breeds"]["@animal"])
114
- end
115
- rescue NoMethodError => e
116
- puts e.message
117
- puts "Invalid response received from API. Check your query."
118
- end
119
- else
120
- raise Petfinder::Error "No valid JSON response from API"
76
+ resp = JSON.parse(response)
77
+ animal = (resp)["petfinder"]["breeds"]["@animal"] unless resp
78
+ res = parse_multiple response, "breed"
79
+ res.each do |breed|
80
+ breed.animal = animal
121
81
  end
122
82
  res
123
83
  end
@@ -141,5 +101,27 @@ module Petfinder
141
101
  end
142
102
  res
143
103
  end
104
+
105
+ private
106
+
107
+ def parse_multiple response, type
108
+ res = []
109
+ types = type.to_s + "s"
110
+ if resp = JSON.parse(response)
111
+ begin
112
+ resp["petfinder"]["#{types}"]["#{type}"].each do |t|
113
+ ruby = "Petfinder::#{type.capitalize}.new(t)"
114
+ res << eval(ruby)
115
+ end
116
+ rescue NoMethodError => e
117
+ puts e.message
118
+ puts "Invalid response received from API. Check your query."
119
+ end
120
+ else
121
+ raise Petfinder::Error "No valid JSON response from API"
122
+ end
123
+ res
124
+ end
125
+
144
126
  end
145
127
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: petfinder-wrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro De Ona