BTW, ZTimezone in ZTimestamp does something similar to what I guess you want to do:
downloadFallbackZoneinfoDataset
�� �� �� �� "Download a fallback copy of the zoneinfo dataset and return its location.
�� �� �� �� See #fallbackZoneinfoDatasetURL for more info and a warning"
�� �� �� �� | zipLocation zoneinfoLocation |
�� �� �� �� zipLocation := self fallbackZoneinfoDatasetURL file asFileReference.
�� �� �� �� zipLocation ensureDelete.
�� �� �� �� ZnClient new
�� �� �� �� �� �� �� �� url: self fallbackZoneinfoDatasetURL;
�� �� �� �� �� �� �� �� downloadTo: zipLocation;
�� �� �� �� �� �� �� �� close.
�� �� �� �� zoneinfoLocation := zipLocation parent / 'zoneinfo'.
�� �� �� �� zoneinfoLocation ensureDeleteAll.
�� �� �� �� ZipArchive new
�� �� �� �� �� �� �� �� readFrom: zipLocation;
�� �� �� �� �� �� �� �� extractAllTo: zoneinfoLocation parent;
�� �� �� �� �� �� �� �� close.
�� �� �� �� ^ zoneinfoLocation
where
fallbackZoneinfoDatasetURL
�� �� �� �� "The URL to the ZIP archive zoneinfo.zip which is offered as a fallback for
�� �� �� �� systems (such as Windows) that do no have their own copy of this data.
�� �� �� �� Note that it is highly recommended that you use such a OS maintained dataset,
�� �� �� �� as this data is changed (being added to) each year."
�� �� �� �� ^ 'https://github.com/svenvc/ztimestamp/raw/master/rsrc/zoneinfo.zip' asUrl
> On 26 Jan 2019, at 23:00, Sven Van Caekenberghe <sven@stfx.eu> wrote:
>
> Hmm, the following all work for me (in Pharo 7.0.1 on macOS):
>
> ZnClient new
>�� �� �� ��url: 'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip';
>�� �� �� ��get;
>�� �� �� ��yourself.
>�� �� �� ��
> ZnClient new
>�� �� �� ��url: 'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip';
>�� �� �� ��get;
>�� �� �� ��contents.
>�� �� �� ��
> ZnClient new
>�� �� �� ��get: 'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip'.
>�� �� �� ��
> ZnClient new
>�� �� �� ��url: 'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip';
>�� �� �� ��downloadTo: '/tmp'.
>
> $ ls -lah /tmp/BioSmalltalkTestFiles.zip
> -rw-r--r--@ 1 sven�� wheel�� ��5.3M Jan 26 22:57 /tmp/BioSmalltalkTestFiles.zip
>
> $ file /tmp/BioSmalltalkTestFiles.zip
> /tmp/BioSmalltalkTestFiles.zip: Zip archive data, at least v2.0 to extract
>
>> On 26 Jan 2019, at 20:36, Hern��n Morales Durand <hernan.morales@gmail.com> wrote:
>>
>> Hi there,
>>
>> In Pharo 7.0 I've encountered an error related with the new streams changes (https://github.com/pharo-open-documentation/pharo-wiki/blob/master/Migration/MigrationToPharo7.md) while downloading a zip file. Problem is ZnUTF8Encoder expects a String, but my code which worked in Pharo 6 provides a ByteArray. I've isolated it in a reproducible way:
>>
>> | webClient resp |
>> webClient := ZnClient new.
>> UIManager default informUserDuring: [ :bar |
>>�� �� bar label: 'Downloading resources for ' , self class printString.
>>�� �� [ webClient
>>�� �� �� �� signalProgress: true;
>>�� �� �� �� get: 'https://github.com/biosmalltalk/biopharo/raw/develop/test_files/BioSmalltalkTestFiles.zip' ]
>>�� �� on: HTTPProgress , ZnEntityTooLarge
>>�� �� do: [ : ex |
>>�� �� �� �� (ex isKindOf: ZnEntityTooLarge)
>>�� �� �� �� �� �� ifTrue: [ ex resume ]
>>�� �� �� �� �� �� ifFalse: [
>>�� �� �� �� �� �� �� �� | progress |
>>�� �� �� �� �� �� �� �� progress := ex.
>>�� �� �� �� �� �� �� �� progress isEmpty
>>�� �� �� �� �� �� �� �� �� �� ifFalse: [
>>�� �� �� �� �� �� �� �� �� �� �� �� bar current: progress percentage.
>>�� �� �� �� �� �� �� �� �� �� �� �� progress total ifNotNil: [ :aTotalNumber | bar label: 'Downloading ' ] ].
>>�� �� �� �� �� �� �� �� progress resume ] ] ].
>> (resp := webClient response) isSuccess
>>�� �� �� �� ifTrue: [ 'output2.zip' asFileReference writeStreamDo: [ : stream | stream nextPutAll: resp contents ] ]
>>�� �� �� �� ifFalse: [ self error: 'Cannot download resource files' ].
>>
>> I also tried using #writeOn: on the response, but that also wrote the response header:
>>
>> self response writeOn: 'test1.zip' asFileReference writeStream.
>> self response writeOn: 'test2.zip' asFileReference binaryWriteStream.
>>
>>
>> HTTP/1.1 200 OK
>> Via: 1.1 varnish
>> Strict-Transport-Security: max-age=31536000
>> ...
>>
>> PK�� �� ���� �� D�� �� �� �� �� �� �� ��BioSmalltalkTestFiles/PK ����U?+*8!"�� K�� /�� ��BioSmalltalkTestFiles/A4A7DS6V01S-Alignment.xml��������ks�����H ����������� ���������� ����������� "���������_ �� ����: 0 R$`����jSS.,a�����
>>
>> Any suggestion?
>>
>> Cheers,
>>
>> Hern��n
>>
>>
>>
>