~hjd/ubuntu/wily/xmlgraphics-commons/debian-merged

« back to all changes in this revision

Viewing changes to src/java/org/apache/xmlgraphics/util/uri/DataURLUtil.java

  • Committer: Bazaar Package Importer
  • Author(s): Vincent Fourmond
  • Date: 2011-02-11 14:15:14 UTC
  • mfrom: (8.1.2 experimental)
  • Revision ID: james.westby@ubuntu.com-20110211141514-h67achft6x31gju1
Tags: 1.4.dfsg-3
Uploading to unstable, hoping we won't break too many things ;-)...

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
 
3
 * contributor license agreements.  See the NOTICE file distributed with
 
4
 * this work for additional information regarding copyright ownership.
 
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
 
6
 * (the "License"); you may not use this file except in compliance with
 
7
 * the License.  You may obtain a copy of the License at
 
8
 *
 
9
 *      http://www.apache.org/licenses/LICENSE-2.0
 
10
 *
 
11
 * Unless required by applicable law or agreed to in writing, software
 
12
 * distributed under the License is distributed on an "AS IS" BASIS,
 
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
14
 * See the License for the specific language governing permissions and
 
15
 * limitations under the License.
 
16
 */
 
17
 
 
18
/* $Id: DataURLUtil.java 695225 2008-09-14 14:31:20Z jeremias $ */
 
19
 
 
20
package org.apache.xmlgraphics.util.uri;
 
21
 
 
22
import java.io.IOException;
 
23
import java.io.InputStream;
 
24
import java.io.StringWriter;
 
25
import java.io.Writer;
 
26
 
 
27
import org.apache.commons.io.IOUtils;
 
28
 
 
29
import org.apache.xmlgraphics.util.WriterOutputStream;
 
30
import org.apache.xmlgraphics.util.io.Base64EncodeStream;
 
31
 
 
32
/**
 
33
 * Utility classes for generating RFC 2397 data URLs.
 
34
 */
 
35
public class DataURLUtil {
 
36
 
 
37
    /**
 
38
     * Creates a new data URL and returns it as a String.
 
39
     * @param in the InputStream to read the data from
 
40
     * @param mediatype the MIME type of the content, or null
 
41
     * @return the newly created data URL
 
42
     * @throws IOException if an I/O error occurs
 
43
     */
 
44
    public static String createDataURL(InputStream in, String mediatype) throws IOException {
 
45
        StringWriter writer = new StringWriter();
 
46
        writeDataURL(in, mediatype, writer);
 
47
        return writer.toString();
 
48
    }
 
49
 
 
50
    /**
 
51
     * Generates a data URL and writes it to a Writer.
 
52
     * @param in the InputStream to read the data from
 
53
     * @param mediatype the MIME type of the content, or null
 
54
     * @param writer the Writer to write to
 
55
     * @throws IOException if an I/O error occurs
 
56
     */
 
57
    public static void writeDataURL(InputStream in, String mediatype, Writer writer)
 
58
            throws IOException {
 
59
        writer.write("data:");
 
60
        if (mediatype != null) {
 
61
            writer.write(mediatype);
 
62
        }
 
63
        writer.write(";base64,");
 
64
        Base64EncodeStream out = new Base64EncodeStream(
 
65
                new WriterOutputStream(writer, "US-ASCII"), false);
 
66
        IOUtils.copy(in, out);
 
67
        out.close();
 
68
    }
 
69
}