Sha256: 86d6d824aae32c618f296d4b96ee8eb4bd7c096809a6466c0a4fb2ccedc7843c

Contents?: true

Size: 692 Bytes

Versions: 3

Compression:

Stored size: 692 Bytes

Contents

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

module ZooApp
  class AnimalServiceClient

    include HTTParty
    base_uri 'animal-service.com'

    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

3 entries across 3 versions & 1 rubygems

Version Path
pact-1.4.0.rc4 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.4.0.rc3 example/zoo-app/lib/zoo_app/animal_service_client.rb
pact-1.4.0.rc2 example/zoo-app/lib/zoo_app/animal_service_client.rb