Sha256: 201b91473412f42b1cf4b88c2b6720c7e520cb869c290f49f08f25303f5b6b0c

Contents?: true

Size: 963 Bytes

Versions: 11

Compression:

Stored size: 963 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'})
      handle_response response do
        ZooApp::Animals::Alligator.new(parse_body(response))
      end
    end

    def self.handle_response 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.0.39 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.1.0.rc2 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.38 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.1.0.rc1 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.37 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.36 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.35 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.34 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.33 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.32 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.0.31 example/zoo-app/lib/zoo_app/animal_service_client.rb