package io.cattle.platform.configitem.server.resource;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.CountingOutputStream;
import org.apache.commons.io.output.NullOutputStream;
public class URLResource extends AbstractResource {
URL url;
long size;
public URLResource(String name, URL url) {
super(name);
this.url = url;
calculateSize();
}
protected void calculateSize() {
InputStream is = null;
CountingOutputStream os = null;
try {
os = new CountingOutputStream(new NullOutputStream());
is = getInputStream();
IOUtils.copy(is, os);
size = os.getCount();
} catch (IOException e) {
throw new IllegalStateException("Failed to count bytes for [" + url + "]", e);
} finally {
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(os);
}
}
@Override
public URL getURL() {
return url;
}
@Override
public long getSize() {
return size;
}
@Override
public InputStream getInputStream() throws IOException {
return url.openStream();
}
}