Hi Stef,
On 20 Oct 2020, at 09:35, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
Hi sven and others
While trying to improve microdown I have the following question. How can I have a more generic getImage: method.
Right now I use getPng: and I would like to support getPng: and getJpeg.
I saw that there is getImageOfType: mimeType fromUrl: urlObject
getImageOfType: mimeType fromUrl: urlObject | client | (client := self client) url: urlObject; accept: mimeType; enforceHttpSuccess: true; enforceAcceptContentType: true; get. "ImageReadWriter does automatic type detection" ^ ImageReadWriter formFromStream: client entity readStream
So it looks like what I want except that I do not know how to specify a Mime
So I did
ZnEasy getImageOfType: (ZnMimeType main: 'image' sub: '*') fromUrl: 'http://pharo.org/files/pharo.png'
Now I would like to know if this is the correct way to do it. I could imagine that we could give a set of possible mime types.
This is an HTTP question (the protocol, not HTML the document format). And you solved your problem well, I never tried it like that myself ;-) I would not write it differently. Like the comment says, it will only work with those types recognised by ImageReadWriter, which are the most common ones, JPG, GIF and PNG. Image/* is a wildcard matching any image type, and there are many, many more. The current mechanism in Zinc with #accept: and #enforceAcceptContentType: true assumes a singular 'Accept' header. But indeed, technically, it is possible to specify more than one. For example, this also works: ZnClient new url: 'http://pharo.org/files/pharo.png'; headerAt: 'Accept' add: ZnMimeType imageGif asString; headerAt: 'Accept' add: ZnMimeType imagePng asString; headerAt: 'Accept' add: ZnMimeType imageJpeg asString; contentReader: [ :entity | ImageReadWriter formFromStream: entity readStream ]; get. But I have to think a bit about this issue. Another approach is to use the extension of the URL. ZnMimeType forFilenameExtension: 'http://pharo.org/files/pharo.png' asUrl file asFileReference extension. It all depends at what level you want to tell your user they tried getting an unsupported file type. Sven
S.
-------------------------------------------- Stéphane Ducasse http://stephane.ducasse.free.fr / http://www.pharo.org 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France