shortuuid

package module
v2.0.3+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2018 License: MIT Imports: 6 Imported by: 0

README

shortuuid

Build Status Godoc

A Go library that generates concise, unambiguous, URL-safe UUIDs. Based on and compatible with the Python library shortuuid.

Often, one needs to use non-sequential IDs in places where users will see them, but the IDs must be as concise and easy to use as possible. shortuuid solves this problem by generating UUIDs using satori/go.uuid and then translating them to base57 using lowercase and uppercase letters and digits, and removing similar-looking characters such as l, 1, I, O and 0.

Usage

package main

import (
    "fmt"

    "github.com/renstrom/shortuuid"
)

func main() {
    u := shortuuid.New() // Cekw67uyMpBGZLRP2HFVbe
}

To use UUID v5 (instead of the default v4), use NewWithNamespace(name string) instead of New().

shortuuid.NewWithNamespace("http://example.com")

It's possible to use a custom alphabet as well, though it has to be 57 characters long.

alphabet := "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxy="
shortuuid.NewWithAlphabet(alphabet) // u=BFWRLr5dXbeWf==iasZi

Bring your own encoder! For example, base58 is popular among bitcoin.

package main

import (
    "fmt"
    "github.com/btcsuite/btcutil/base58"
    "github.com/renstrom/shortuuid"
    "github.com/satori/go.uuid"
)

type base58Encoder struct {}

func (enc base58Encoder) Encode(u uuid.UUID) string {
    return base58.Encode(u.Bytes())
}

func (enc base58Encoder) Decode(s string) (uuid.UUID, error) {
    return uuid.FromBytes(base58.Decode(s))
}

func main() {
    enc := base58Encoder{}
    fmt.Println(shortuuid.NewWithEncoder(enc)) // 6R7VqaQHbzC1xwA5UueGe6
}

License

MIT

Documentation

Index

Constants

View Source
const DefaultAlphabet = "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

DefaultAlphabet is the default alphabet used.

Variables

View Source
var DefaultEncoder = &base57{newAlphabet(DefaultAlphabet)}

DefaultEncoder is the default encoder uses when generating new UUIDs, and is based on Base57.

Functions

func New

func New() string

New returns a new UUIDv4, encoded with base57.

func NewWithAlphabet

func NewWithAlphabet(abc string) string

NewWithAlphabet returns a new UUIDv4, encoded with base57 using the alternative alphabet abc.

func NewWithEncoder

func NewWithEncoder(enc Encoder) string

NewWithEncoder returns a new UUIDv4, encoded with enc.

func NewWithNamespace

func NewWithNamespace(name string) string

NewWithNamespace returns a new UUIDv5 (or v4 if name is empty), encoded with base57.

Types

type Encoder

type Encoder interface {
	Encode(uuid.UUID) string
	Decode(string) (uuid.UUID, error)
}

Encoder is an interface for encoding/decoding UUIDs to strings.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL