Chris Muller uploaded a new version of WebClient-HTTP to project The Trunk:
http://source.squeak.org/trunk/WebClient-HTTP-cmm.4.mcz==================== Summary ====================
Name: WebClient-HTTP-cmm.4
Author: cmm
Time: 20 November 2015, 5:30:31.892 pm
UUID: 8f2d17a2-99b0-4216-8808-5d3276f15ae0
Ancestors: WebClient-HTTP-cmm.3
Support the 'args' variable in HTTPSocket class>>#httpGet:args:user:passwd:.
This fixes the in-image 'mc history' and origin functions for methods and classes.
=============== Diff against WebClient-HTTP-cmm.3 ===============
Item was changed:
----- Method: HTTPSocket class>>httpGet:args:user:passwd: (in category '*webclient-http') -----
httpGet: url args: args user: user passwd: passwd
"Upload the contents of the stream to a file on the server.
WARNING: This method will send a basic auth header proactively.
This is necessary to avoid breaking MC and SqueakSource since SS does not
return a 401 when accessing a private (global no access) repository."
| urlString xhdrs client resp progress |
+ "Normalize the url and append args"
- "Normalize the url"
urlString := (Url absoluteFromText: url) asString.
+ args ifNotNil: [
+ urlString := urlString, (self argString: args)
+ ].
"Some raw extra headers which historically have been added"
xhdrs := HTTPProxyCredentials,
HTTPBlabEmail. "may be empty"
client := WebClient new.
client username: user; password: passwd.
^[resp := client httpGet: urlString do:[:req|
"HACK: Proactively send a basic auth header.
See comment above."
req headerAt: 'Authorization' put: 'Basic ', (user, ':', passwd) base64Encoded.
"Accept anything"
req addHeader: 'Accept' value: '*/*'.
"Add the additional headers"
(WebUtils readHeadersFrom: xhdrs readStream)
do:[:assoc| req addHeader: assoc key value: assoc value]].
progress := [:total :amount|
(HTTPProgress new) total: total; amount: amount; signal: 'Downloading...'
].
"Simulate old HTTPSocket return behavior"
(resp code between: 200 and: 299)
ifTrue:[^(RWBinaryOrTextStream with: (resp contentWithProgress: progress)) reset]
ifFalse:[resp asString, resp content].
] ensure:[client destroy].
!