org.snapscript.common.store.RemoteStore Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of snap Show documentation
Show all versions of snap Show documentation
Dynamic scripting for the JVM
package org.snapscript.common.store;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
public class RemoteStore implements Store {
private final RemoteClient client;
private final URI root;
public RemoteStore(URI root) {
this.client = new RemoteClient(root);
this.root = root;
}
@Override
public InputStream getInputStream(String path) {
RemoteResponse response = client.get(path);
RemoteStatus status = response.getStatus();
if(status.isNotFound()) {
throw new NotFoundException("Could not find resource '" + path + "' from '" + root + "'");
}
if(status.isError()) {
throw new StoreException("Error reading resource '" + path + "' from '" + root + "'");
}
return response.getInputStream();
}
@Override
public OutputStream getOutputStream(String path) {
RemoteResponse response = client.put(path);
RemoteStatus status = response.getStatus();
if(status.isError()) {
throw new StoreException("Error writing resource '" + path + "' to '" + root + "'");
}
return response.getOutputStream();
}
}