Sha256: b79bbba4ba3604a3672c01d53fb44b9d68e71958c7a2294961d72ad5a22547b2

Contents?: true

Size: 964 Bytes

Versions: 11

Compression:

Stored size: 964 Bytes

Contents

require 'httparty'
require 'zoo_app/models/alligator'

module ZooApp
  class AnimalServiceClient

    include HTTParty
    base_uri 'animal-service.com'

    def self.find_alligators
      response = get("/alligators", :headers => {'Accept' => 'application/json'})
      handle_response response do
        parse_body(response).collect do | hash |
          ZooApp::Animals::Alligator.new(hash)
        end
      end
    end

    def self.find_alligator_by_name name
      response = get("/alligators/#{name}", :headers => {'Accept' => 'application/json'})
      when_successful(response) do
        ZooApp::Animals::Alligator.new(parse_body(response))
      end
    end

    def self.when_successful response
      if response.success?
        yield
      elsif response.code == 404
        nil
      else
        raise response.body
      end
    end

    def self.parse_body response
      JSON.parse(response.body, {:symbolize_names => true})
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
pact-1.3.3 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.3.2 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.3.1 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.3.0 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.2.1.rc2 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.2.1.rc1 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.1.1 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.1.0 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.1.0.rc5 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.1.0.rc4 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.1.0.rc3 example/zoo-app/lib/zoo_app/animal_service_client.rb