diff --git a/src/main/java/org/kohsuke/github/GHBlob.java b/src/main/java/org/kohsuke/github/GHBlob.java index f795da00d..7327fbfb1 100644 --- a/src/main/java/org/kohsuke/github/GHBlob.java +++ b/src/main/java/org/kohsuke/github/GHBlob.java @@ -1,30 +1,63 @@ package org.kohsuke.github; +import org.apache.commons.codec.binary.Base64InputStream; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URL; + /** * @author Kanstantsin Shautsou + * @author Kohsuke Kawaguchi + * @see GHRepository#getBlob(String) * @see Get a blob */ public class GHBlob { private String content, encoding, url, sha; private long size; - public String getEncoding() { - return encoding; - } - - public String getUrl() { - return url; + /** + * API URL of this blob. + */ + public URL getUrl() { + return GitHub.parseURL(url); } public String getSha() { return sha; } + /** + * Number of bytes in this blob. + */ public long getSize() { return size; } + public String getEncoding() { + return encoding; + } + + /** + * Encoded content. You probably want {@link #read()} + */ public String getContent() { return content; } + + /** + * Retrieves the actual bytes of the blob. + */ + public InputStream read() { + if (encoding.equals("base64")) { + try { + return new Base64InputStream(new ByteArrayInputStream(content.getBytes("US-ASCII")), false); + } catch (UnsupportedEncodingException e) { + throw new AssertionError(e); // US-ASCII is mandatory + } + } + + throw new UnsupportedOperationException("Unrecognized encoding: "+encoding); + } }