001package media;
002
003import javax.enterprise.context.ApplicationScoped;
004import javax.inject.Inject;
005import javax.validation.constraints.NotBlank;
006import java.io.BufferedInputStream;
007import java.io.IOException;
008import java.io.InputStream;
009import java.net.URLConnection;
010
011/**
012 * Classe contenente la logica per il recupero di immagini da unità persistenti
013 */
014@ApplicationScoped
015public class ImageService {
016    private MediaRepository mediaRepository;
017
018    protected ImageService(){}
019
020    @Inject
021    protected ImageService(MediaRepository mediaRepository){
022        this.mediaRepository = mediaRepository;
023    }
024
025    /**
026     * Ritorna l'input stream di un immagine
027     * @param filename nome dell'immagine
028     * @return input stream dell'immagine
029     * @throws IOException
030     */
031    public InputStream getImage(@NotBlank String filename) throws IOException {
032        InputStream inputStream = mediaRepository.get(filename);
033        if(inputStream == null)
034            return null;
035
036        inputStream = new BufferedInputStream(inputStream);
037        String mimetype = URLConnection.guessContentTypeFromStream(inputStream);
038        if(mimetype == null || !mimetype.startsWith("image/"))
039            return  null;
040
041        return inputStream;
042    }
043}