[Pharo-project] [Zinc] ZnTooManyRedirects exception

Sven Van Caekenberghe sven at beta9.be
Wed Nov 23 11:37:27 EST 2011


Jan,

On 23 Nov 2011, at 14:12, Sven Van Caekenberghe wrote:

> Let me think a bit about this, and I will come back to you.

I added some new features so that now this should work:

testRedirectDontFollow
	| client |
	(client := ZnClient new) 
		dontFollowRedirects;
		get: 'http://www.pharo-project.org'.
	self assert: client response isRedirect.
	client
		enforceHttpSuccess: true;
		get: 'http://www.pharo-project.org'.
	self assert: client response isRedirect.
	client close

I think this will cover your use case, please let me know how it goes.

I discovered that I more ore less already had something that came close:

testRedirect
	| client response |
	client := ZnClient new url: 'http://www.pharo-project.org'.
	self assert: (client get; isSuccess).
	client 
		close;
		maxNumberOfRedirects: 0;
		url: 'http://www.pharo-project.org'.
	self should: [ client get ] raise: ZnTooManyRedirects.
	client close.
	response := [ ZnClient new beOneShot; maxNumberOfRedirects: 0; get: 'http://www.pharo-project.org'; response ]
		on: ZnTooManyRedirects do: [ :exception | exception resume ].
	self assert: response isRedirect 

Resuming the exception gave a true redirect response.

But that code is not very nice/handy, and it would not work when combined with enforceHttpSuccess: true.

These are new commits:

==================== Summary ====================

Name: Zinc-HTTP-SvenVanCaekenberghe.221
Author: SvenVanCaekenberghe
Time: 23 November 2011, 5:30:09 pm
UUID: 4df9982e-63e1-49ea-bfb0-2f9cb43f6f0b
Ancestors: Zinc-HTTP-SvenVanCaekenberghe.220

added new #followsRedirects boolean option to ZnClient 
because setting #maxNumberOfRedirects to 0 did not work well
for an example see the ZnClientTests>>#testRedirectDontFollow
Thx Jan van de Sandt for reporting this

==================== Summary ====================

Name: Zinc-Tests-SvenVanCaekenberghe.115
Author: SvenVanCaekenberghe
Time: 23 November 2011, 5:31:22 pm
UUID: eb8c67e4-bdf2-4741-b149-78bdaf5d4970
Ancestors: Zinc-Tests-SvenVanCaekenberghe.114

added ZnClientTests>>#testRedirectDontFollow to test 
the new #followsRedirects boolean option to ZnClient, 
including under the case of #enforceHttpSuccess: true

Regards,

Sven



More information about the Pharo-dev mailing list