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