diff --git a/src/main/java/org/cactoos/io/UrlAsInput.java b/src/main/java/org/cactoos/io/UrlAsInput.java index 6fc8588aeb..02238ea027 100644 --- a/src/main/java/org/cactoos/io/UrlAsInput.java +++ b/src/main/java/org/cactoos/io/UrlAsInput.java @@ -25,8 +25,11 @@ import java.io.IOException; import java.io.InputStream; +import java.net.URI; import java.net.URL; import org.cactoos.Input; +import org.cactoos.Scalar; +import org.cactoos.func.IoCheckedScalar; /** * URL as Input. @@ -42,19 +45,45 @@ public final class UrlAsInput implements Input { /** * The URL. */ - private final URL source; + private final Scalar source; + + /** + * Ctor. + * @param url The URL + * @since 0.6 + */ + public UrlAsInput(final String url) { + this(() -> new URL(url)); + } + + /** + * Ctor. + * @param url The URL + * @since 0.6 + */ + public UrlAsInput(final URI url) { + this(url::toURL); + } /** * Ctor. * @param url The URL */ public UrlAsInput(final URL url) { - this.source = url; + this(() -> url); + } + + /** + * Ctor. + * @param src Source + */ + public UrlAsInput(final Scalar src) { + this.source = src; } @Override public InputStream stream() throws IOException { - return this.source.openStream(); + return new IoCheckedScalar<>(this.source).asValue().openStream(); } } diff --git a/src/test/java/org/cactoos/io/UrlAsInputTest.java b/src/test/java/org/cactoos/io/UrlAsInputTest.java index 3a011ccfa4..17802fc98c 100644 --- a/src/test/java/org/cactoos/io/UrlAsInputTest.java +++ b/src/test/java/org/cactoos/io/UrlAsInputTest.java @@ -63,9 +63,7 @@ public void readsRealUrl() throws IOException { "Can't fetch bytes from the URL", new BytesAsText( new InputAsBytes( - new UrlAsInput( - home.toURL() - ) + new UrlAsInput(home) ) ), new TextHasString(