package org.webpieces.router.impl.compression;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.webpieces.router.impl.compression.MimeTypes.MimeTypeResult;
@Singleton
public class CompressionLookup {
private CompressionDecider toCompressOrNotToCompress;
private Map<String, Compression> compressions = new HashMap<>();
@Inject
public CompressionLookup(GzipCompression gzipCompression, CompressionDecider toCompressOrNotToCompress) {
this.toCompressOrNotToCompress = toCompressOrNotToCompress;
compressions.put(gzipCompression.getCompressionType(), gzipCompression);
}
public Compression createCompressionStream(List<String> encodings, String extension, MimeTypeResult mimeType) {
if(!toCompressOrNotToCompress.isCompressableType(extension, mimeType)) {
return null;
}
Compression compression = null;
for(String type : encodings) {
compression = compressions.get(type);
if(compression != null)
break;
}
return compression;
}
}