Changeset 4887
- Timestamp:
- 08/31/06 09:31:11 (2 years ago)
- Files:
-
- trunk/activeresource/CHANGELOG (modified) (1 diff)
- trunk/activeresource/lib/active_resource/connection.rb (modified) (4 diffs)
- trunk/activeresource/test/connection_test.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activeresource/CHANGELOG
r4886 r4887 1 1 *SVN* 2 2 3 * site= accepts URIs.[Jeremy Kemper]3 * Base.site= accepts URIs. 200...400 are valid response codes. PUT and POST request bodies default to ''. [Jeremy Kemper] 4 4 5 5 * Initial checkin: object-oriented client for restful HTTP resources which follow the Rails convention. [DHH] trunk/activeresource/lib/active_resource/connection.rb
r4492 r4887 12 12 @message = message 13 13 end 14 14 15 15 def to_s 16 16 "Failed with #{response.code}" 17 17 end 18 18 end 19 19 20 20 class ClientError < ConnectionError 21 21 end … … 23 23 class ServerError < ConnectionError 24 24 end 25 25 26 26 class ResourceNotFound < ClientError 27 27 end 28 28 29 29 class Connection 30 attr_accessor : uri31 30 attr_accessor :site 31 32 32 class << self 33 33 def requests … … 39 39 @site = site 40 40 end 41 41 42 42 def get(path) 43 43 Hash.create_from_xml(request(:get, path).body) 44 44 end 45 45 46 46 def delete(path) 47 47 request(:delete, path) 48 48 end 49 50 def put(path, body )49 50 def put(path, body = '') 51 51 request(:put, path, body) 52 52 end 53 53 54 def post(path, body )54 def post(path, body = '') 55 55 request(:post, path, body) 56 56 end 57 57 58 58 private 59 59 def request(method, *arguments) 60 response = http.send(method, *arguments) 60 handle_response(http.send(method, *arguments)) 61 end 61 62 63 def handle_response(response) 62 64 case response.code.to_i 63 when 200... 30065 when 200...400 64 66 response 65 67 when 404 … … 80 82 @http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @http.use_ssl 81 83 end 82 84 83 85 @http 84 86 end trunk/activeresource/test/connection_test.rb
r4492 r4887 1 1 require "#{File.dirname(__FILE__)}/abstract_unit" 2 require "fixtures/person"3 2 4 3 class ConnectionTest < Test::Unit::TestCase 4 Response = Struct.new(:code) 5 5 6 def setup 7 @conn = ActiveResource::Connection.new('http://localhost') 6 8 end 7 8 def test_something 9 true 9 10 def test_handle_response 11 # 2xx and 3xx are valid responses. 12 [200, 299, 300, 399].each do |code| 13 expected = Response.new(code) 14 assert_equal expected, @conn.send(:handle_response, expected) 15 end 16 17 # 404 is a missing resource. 18 assert_response_raises ActiveResource::ResourceNotFound, 404 19 20 # 4xx are client errors. 21 [400, 499].each do |code| 22 assert_response_raises ActiveResource::ClientError, code 23 end 24 25 # 5xx are server errors. 26 [500, 599].each do |code| 27 assert_response_raises ActiveResource::ServerError, code 28 end 29 30 # Others are unknown. 31 [199, 600].each do |code| 32 assert_response_raises ActiveResource::ConnectionError, code 33 end 10 34 end 35 36 protected 37 def assert_response_raises(klass, code) 38 assert_raise(klass, "Expected response code #{code} to raise #{klass}") do 39 @conn.send(:handle_response, Response.new(code)) 40 end 41 end 11 42 end