I’m trying to migrate the Pier link checker to Pharo 3, going from HTTPSocket to ZnClient. Looks like a good API improvement, but some things are still different. http://humane-assessment.com claims not to support this head request (501), as does http:://cognitive-edge.com (404). Anyone know what I should change?
Stephan httpHead: aString "Answer an array with response code and effective URL, or nil." | response | response := ZnClient new url: aString trimBoth; timeout: 1; method: #HEAD; ifFail: [ ^Array with: 404 with: aString ]; executeWithTimeout; response. ^ Array with: response code with: (response headers at: 'Location' ifAbsent: [aString]) . httpHead: aString "Answer an array with response code and effective URL, or nil." | url socket | url := Url absoluteFromText: aString. (url isKindOf: HttpUrl) ifFalse: [ ^ nil ]. [ socket := HTTPSocket initHTTPSocket: url wait: (HTTPSocket deadlineSecs: 1) ifError: [ ^ Array with: 404 with: aString ] ] on: NameLookupFailure do: [ :err | ^ Array with: 404 with: aString ]. ^ [ [ socket sendCommand: ('HEAD ' , ((HTTPSocket shouldUseProxy: url authority) ifTrue: [ url printString ] ifFalse: [ url fullPath ]) , ' HTTP/1.0' , String crlf) , ('Host: ' , url authority , String crlf) , (HTTPSocket userAgentString , String crlf) , (HTTPSocket classPool at: #HTTPProxyCredentials). socket header: (socket getResponseUpTo: String crlf , String crlf) first. Array with: socket responseCode asInteger with: (socket getHeader: 'location' default: aString) ] on: Error do: [ :err | nil ] ] ensure: [ socket destroy ]