Skip to content

sjkp/ShortCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShortCode

Simple url short code library, like known from youtube video ids, but generates short codes that are prepended with a date (also in short code format).

Documentation

A short code generated by this library looks like this: AlwJy_uNAs

Note that the short codes generated are case-sensitive.

The first 3 symbols (Alw) are the Base64UrlSafe encoded date, with any equal-signs removed. Base64UrlSafe encoding simply means that '+' is replaced by '-' and '/' is replaced by '_'.

A date in format MM-dd-yyyy wouldn't be representable in just 3 characters, so it's not a full DateTime object, but only dates from year 0-99 are supported (the library assumes that 0 is 2000).

In order to represent the date by 3 base64UrlSafe encoded characters, the year, month and day portion of the date is packed into two bytes in the following way.

Alw in this example represent the date 2001/2/28.

[--Year 7bits--|--Month 4bits--|--Day 5bits--]

The characters following the first 3 date representing characters, are random bytes generated with the System.Random (not so great random generator). These bytes are also passed through the same Base64UrlSafe encoding, and concatenated with the date portion of the short code. The length of the random part is variable by using the NewShortCodeByDateAndLength(d : DateTime, len: int) method. When using NewShortCode() it is set to 5.

About

Simple url short code library, like known from youtube video ids, but generates short codes that are prepended with a date (also in short code format)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages