package com.googlecode.totallylazy;
import com.googlecode.totallylazy.functions.Function1;
import com.googlecode.totallylazy.io.Uri;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import static com.googlecode.totallylazy.Closeables.using;
public class Bytes {
public static byte[] bytes(String value) {
return Strings.bytes(value);
}
public static byte[] bytes(Class<?> aClass) {
return bytes(aClass.getResourceAsStream("/" + Classes.filename(aClass)));
}
public static byte[] bytes(InputStream input) {
if (input == null) {
return new byte[0];
}
ByteArrayOutputStream output = new ByteArrayOutputStream();
Streams.copyAndClose(input, output);
return output.toByteArray();
}
public static byte[] bytes(Uri input) {
return bytes(input.toURL());
}
public static byte[] bytes(URL input) {
try {
return bytes(input.openStream());
} catch (IOException e) {
throw LazyException.lazyException(e);
}
}
public static byte[] bytes(File file) {
try {
return bytes(new FileInputStream(file));
} catch (FileNotFoundException e) {
throw LazyException.lazyException(e);
}
}
public static <T extends OutputStream> T write(final byte[] value, final T outputStream) {
try {
outputStream.write(value);
return outputStream;
} catch (IOException e) {
throw LazyException.lazyException(e);
}
}
public static Function1<OutputStream, OutputStream> write(final byte[] value) {
return outputStream -> write(value, outputStream);
}
}