[squeak-dev] The Trunk: WebClient-Core-topa.109.mcz
Tobias Pape
Das.Linux at gmx.de
Sat Jul 8 13:28:56 UTC 2017
Hi,
> On 08.07.2017, at 15:15, Levente Uzonyi <leves at caesar.elte.hu> wrote:
>
> Where does BrotliReadStream come from?
My imagination and wishful thinking, to be frank…
A reminder for me, that I actually want to implement that…
>
> Also, #hasBindingOf: seems dangerous to use as it uses declarations instead of bindings or both to look up the binding, while other binding-related methods use bindings (e.g. #bindingOf:ifAbsent:, #hasBindingThatBeginsWith:, #hideBinding:, #associationOrUndeclaredAt:).
> It will probably work as long as there's only a single environment.
Eeek. I used hasClassNamed: there, but that also just seemed to use the declarations.
I understand that I don't understand enough of Environments yet.
Best regards
-Tobias
>
> Levente
>
> On Thu, 6 Jul 2017, commits at source.squeak.org wrote:
>
>> 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
|