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; } }