lib/petfinder/client.rb in petfinder-wrap-1.0.3 vs lib/petfinder/client.rb in petfinder-wrap-1.0.3.3
- old
+ new
@@ -15,51 +15,94 @@
def find_pet id
find_pet_request = API_BASE_URI + "pet.get?key=#{@api_key}&id=#{id}&format=json"
response = open(find_pet_request).read
if resp = JSON.parse(response)
- Petfinder::Pet.new(resp["petfinder"]["pet"])
+ begin
+ pet = Petfinder::Pet.new(resp["petfinder"]["pet"])
+ if pet.attributes.nil?
+ raise Petfinder::Error.new "Invalid response received from API. Check your query"
+ else
+ pet
+ end
+ rescue Petfinder::Error => e
+ puts e.message
+ end
else
- raise Petfinder::Error "No valid JSON response from API"
+ raise Petfinder::Error.new "No valid JSON response from API"
end
end
def find_pets animal, zip_code
find_pets_request = API_BASE_URI + "pet.find?key=#{@api_key}&animal=#{animal}&location=#{zip_code}&output=basic&format=json"
# p find_pets_request
response = open(find_pets_request).read
res = []
if resp = JSON.parse(response)
- resp["petfinder"]["pets"].each do |pet|
- res << Petfinder::Pet.new(pet[1][0])
+ begin
+ resp["petfinder"]["pets"].each do |pet|
+ res << Petfinder::Pet.new(pet[1][0])
+ end
+ rescue NoMethodError => e
+ puts e.message
+ puts "Invalid response received from API. Check your query"
end
end
res
end
def get_shelter id
get_shelter_request = API_BASE_URI + "shelter.get?key=#{@api_key}&id=#{id}&format=json"
response = open(get_shelter_request).read
if resp = JSON.parse(response)
- Petfinder::Shelter.new(resp["petfinder"]["shelter"])
+ shelter = Petfinder::Shelter.new(resp["petfinder"]["shelter"])
+ begin
+ if shelter.attributes.nil?
+ raise Petfinder::Error.new "No pets received from API. Check your query"
+ else
+ shelter
+ end
+ rescue Petfinder::Error => e
+ puts e.message
+ end
else
- raise Petfinder::Error "No valid JSON response from API"
+ raise Petfinder::Error.new "No valid JSON response from API"
end
end
def find_shelters location
find_shelters_request = API_BASE_URI + "shelter.find?key=#{@api_key}&location=#{location}&format=json"
response = open(find_shelters_request).read
res = []
if resp = JSON.parse(response)
- resp["petfinder"]["shelters"]["shelter"].each do |shelter|
- res << Shelter.new(shelter)
+ begin
+ resp["petfinder"]["shelters"]["shelter"].each do |shelter|
+ res << Shelter.new(shelter)
+ end
+ rescue NoMethodError => e
+ puts e.message
+ puts "Invalid response received from API. Check your query"
end
end
res
end
+ def breeds animal
+ list_breeds_request = API_BASE_URI + "breed.list?key=#{@api_key}&animal=#{animal}&format=json"
+ response = open(list_breeds_request).read
+ res = []
+ if resp = JSON.parse(response)
+ begin
+ resp["petfinder"]["breeds"]["breed"].each do |breed|
+ res << Petfinder::Breed.new(breed, resp["petfinder"]["breeds"]["@animal"])
+ end
+ rescue NoMethodError => e
+ puts e.message
+ puts "Invalid response received from API. Check your query."
+ end
+ else
+ raise Petfinder::Error "No valid JSON response from API"
+ end
+ res
+ end
end
-
- private
-
end