[squeak-dev] The Trunk: WebClient-Core-topa.109.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jul 6 13:26:39 UTC 2017
Tobias Pape uploaded a new version of WebClient-Core to project The Trunk:
http://source.squeak.org/trunk/WebClient-Core-topa.109.mcz
==================== Summary ====================
Name: WebClient-Core-topa.109
Author: topa
Time: 6 July 2017, 3:27:22.152308 pm
UUID: b795898b-9723-44ab-a429-bceb056f4b90
Ancestors: WebClient-Core-topa.108
As with content-type-charset, cope for content-encoding variability
=============== Diff against WebClient-Core-topa.108 ===============
Item was added:
+ ----- Method: WebClient>>contentDecoders (in category 'initialize') -----
+ contentDecoders
+
+ | result |
+ result := nil.
+ (self class environment hasBindingOf: #GZipReadStream)
+ ifTrue: [result := 'gzip'].
+ (self class environment hasBindingOf: #BrotliReadStream)
+ ifTrue: [ result := result ifNil: ['br'] ifNotNil: [:r | r, ', br']].
+ ^ result!
Item was changed:
----- Method: WebClient>>httpGet:do: (in category 'methods') -----
httpGet: urlString do: aBlock
"GET the response from the given url"
"(WebClient httpGet: 'http://www.squeak.org') content"
| request |
self initializeFromUrl: urlString.
request := self requestWithUrl: urlString.
request method: 'GET'.
+ userAgent ifNotNil:[:ua | request headerAt: 'User-Agent' put: ua].
+ self contentDecoders ifNotNil: [:decoders | request headerAt: 'Accept-Encoding' put: decoders].
- userAgent ifNotNil:[request headerAt: 'User-Agent' put: userAgent].
- request headerAt: 'Accept-Encoding' put: 'gzip'.
aBlock value: request.
^self sendRequest: request
!
Item was added:
+ ----- Method: WebMessage>>decoderForContentEncoding (in category 'private') -----
+ decoderForContentEncoding
+
+ (self headerAt: 'content-encoding') = 'gzip'
+ ifTrue: [^ self class environment
+ at: #GZipReadStream ifAbsent: [self error: 'GZip encoded responses not supported']].
+ (self headerAt: 'content-encoding') = 'br'
+ ifTrue: [^ self class environment
+ at: #BrotliReadStream ifAbsent: [self error: 'Brotli encoded responses not supported']].
+ ^ nil!
Item was changed:
----- Method: WebMessage>>getContentWithProgress: (in category 'private') -----
getContentWithProgress: progressBlockOrNil
"Reads available content and returns it."
| length result |
length := self contentLength.
result := (stream isBinary ifTrue:[ ByteArray ] ifFalse: [ ByteString ])
new: (length ifNil: [ 1000 ])
streamContents: [ :outputStream |
self
streamFrom: stream
to: outputStream
size: length
progress: progressBlockOrNil ].
+ self decoderForContentEncoding ifNotNil: [:decoder |
+ result := (decoder on: result) upToEnd].
- (self headerAt: 'content-encoding') = 'gzip' ifTrue: [
- result := (GZipReadStream on: result) upToEnd].
self textConverterForContentType ifNotNil: [:converter |
result := result convertFromWithConverter: converter].
^ result
!
More information about the Squeak-dev
mailing list
|