[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