package org.commcare.engine.references;
import org.commcare.interfaces.HttpRequestEndpoints;
import org.commcare.network.HttpRequestGenerator;
import org.javarosa.core.reference.Reference;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
/**
* @author ctsims
*/
public class JavaHttpReference implements Reference {
private final String uri;
private HttpRequestEndpoints generator;
public JavaHttpReference(String uri, HttpRequestGenerator generator) {
this.uri = uri;
this.generator = generator;
}
@Override
public boolean doesBinaryExist() throws IOException {
//For now....
return true;
}
@Override
public OutputStream getOutputStream() throws IOException {
throw new IOException("Http references are read only!");
}
@Override
public InputStream getStream() throws IOException {
URL url = new URL(uri);
return generator.simpleGet(url);
}
@Override
public String getURI() {
return uri;
}
@Override
public boolean isReadOnly() {
return true;
}
@Override
public void remove() throws IOException {
throw new IOException("Http references are read only!");
}
@Override
public String getLocalURI() {
return uri;
}
//TODO: This should get changed to be set from the root, don't assume this will
//still be here indefinitely
public void setHttpRequestor(HttpRequestEndpoints generator) {
this.generator = generator;
}
}