diff options
Diffstat (limited to 'src/main/java/com/kitfox/svg/app/data/Handler.java')
-rw-r--r-- | src/main/java/com/kitfox/svg/app/data/Handler.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/main/java/com/kitfox/svg/app/data/Handler.java b/src/main/java/com/kitfox/svg/app/data/Handler.java new file mode 100644 index 0000000..9cd3525 --- /dev/null +++ b/src/main/java/com/kitfox/svg/app/data/Handler.java @@ -0,0 +1,76 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package com.kitfox.svg.app.data; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; + +/** + * + * @author kitfox + */ +public class Handler extends URLStreamHandler +{ + class Connection extends URLConnection + { + String mime; + byte[] buf; + + public Connection(URL url) + { + super(url); + + String path = url.getPath(); + int idx = path.indexOf(';'); + mime = path.substring(0, idx); + String content = path.substring(idx + 1); + + if (content.startsWith("base64,")) + { + content = content.substring(7); + try { + buf = new sun.misc.BASE64Decoder().decodeBuffer(content); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + } + + public void connect() throws IOException + { + } + + public String getHeaderField(String name) + { + if ("content-type".equals(name)) + { + return mime; + } + + return super.getHeaderField(name); + } + + public InputStream getInputStream() throws IOException + { + return new ByteArrayInputStream(buf); + } + +// public Object getContent() throws IOException +// { +// BufferedImage img = ImageIO.read(getInputStream()); +// } + } + + protected URLConnection openConnection(URL u) throws IOException + { + return new Connection(u); + } + +} |