Categorygithub.com/vincent-petithory/dataurl
modulepackage
1.0.0
Repository: https://github.com/vincent-petithory/dataurl.git
Documentation: pkg.go.dev

# README

Data URL Schemes for Go wercker status GoDoc

This package parses and generates Data URL Schemes for the Go language, according to RFC 2397.

Data URLs are small chunks of data commonly used in browsers to display inline data, typically like small images, or when you use the FileReader API of the browser.

Common use-cases:

  • generate a data URL out of a string, []byte, io.Reader for inclusion in HTML templates,
  • parse a data URL sent by a browser in a http.Handler, and do something with the data (save to disk, etc.)
  • ...

Install the package with:

go get github.com/vincent-petithory/dataurl

Usage

package main

import (
	"github.com/vincent-petithory/dataurl"
	"fmt"
)

func main() {
	dataURL, err := dataurl.DecodeString(`data:text/plain;charset=utf-8;base64,aGV5YQ==`)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("content type: %s, data: %s\n", dataURL.MediaType.ContentType(), string(dataURL.Data))
	// Output: content type: text/plain, data: heya
}

From a http.Handler:

func handleDataURLUpload(w http.ResponseWriter, r *http.Request) {
	dataURL, err := dataurl.Decode(r.Body)
	defer r.Body.Close()
	if err != nil {
		http.Error(w, err.Error(), http.StatusBadRequest)
		return
	}
	if dataURL.ContentType() == "image/png" {
		ioutil.WriteFile("image.png", dataURL.Data, 0644)
	} else {
		http.Error(w, "not a png", http.StatusBadRequest)
	}
}

Command

For convenience, a dataurl command is provided to encode/decode dataurl streams.

dataurl - Encode or decode dataurl data and print to standard output

Usage: dataurl [OPTION]... [FILE]

  dataurl encodes or decodes FILE or standard input if FILE is - or omitted, and prints to standard output.
  Unless -mimetype is used, when FILE is specified, dataurl will attempt to detect its mimetype using Go's mime.TypeByExtension (http://golang.org/pkg/mime/#TypeByExtension). If this fails or data is read from STDIN, the mimetype will default to application/octet-stream.

Options:
  -a=false: encode data using ascii instead of base64
  -ascii=false: encode data using ascii instead of base64
  -d=false: decode data instead of encoding
  -decode=false: decode data instead of encoding
  -m="": force the mimetype of the data to encode to this value
  -mimetype="": force the mimetype of the data to encode to this value

Contributing

Feel free to file an issue/make a pull request if you find any bug, or want to suggest enhancements.

# Packages

No description provided by the author

# Functions

Decode decodes a Data URL scheme from a io.Reader.
DecodeString decodes a Data URL scheme string.
EncodeBytes encodes the data bytes into a Data URL string, using base 64 encoding.
Escape implements URL escaping, as defined in RFC 2397 (http://tools.ietf.org/html/rfc2397).
EscapeString is like Escape, but taking a string as argument.
New returns a new DataURL initialized with data and a MediaType parsed from mediatype and paramPairs.
Unescape unescapes a character sequence escaped with Escape(String?).
UnescapeToString is like Unescape, but returning a string.

# Constants

EncodingASCII is ascii encoding for the data url.
EncodingBase64 is base64 encoding for the data url.

# Structs

DataURL is the combination of a MediaType describing the type of its Data.
MediaType is the combination of a media type, a media subtype and optional parameters.