Created on 25 March 2021
icon_unfollowing
Login to follow
urlshorten

Url Shorten

Stable version 1.0.2 (Compatible with OutSystems 11)
Uploaded on 29 July 2023 by 
urlshorten

Url Shorten

Details
This will help you URL shorten service where you can write a long URL into an input field and the service shortens the URL to "http://www.example.org/abcdef".
Read more

I have a database table with three columns:

  1. id, integer, auto-increment
  2. long, string, the long URL the user entered
  3. short, string, the shortened URL (or just the six characters)

Demo Url :


Theoretical background

You need a Bijective Function f. This is necessary so that you can find a inverse function g('abc') = 123 for your f(123) = 'abc' function. This means:

There must be no x1, x2 (with x1 ? x2) that will make f(x1) = f(x2),

and for every y you must be able to find an x so that f(x) = y.

How to convert the ID to a shortened URL

Think of an alphabet we want to use. In your case, that's [a-zA-Z0-9]. It contains 62 letters.

Take an auto-generated, unique numerical key (the auto-incremented id of a MySQL table for example).

For this example, I will use 12510 (125 with a base of 10).

Now you have to convert 12510 to X62 (base 62).

12510 = 2×621 + 1×620 = [2,1]

This requires the use of integer division and modulo. A pseudo-code example:

digits = []


while num > 0

  remainder = modulo(num, 62)

  digits.push(remainder)

  num = divide(num, 62)


digits = digits.reverse

Now map the indices 2 and 1 to your alphabet. This is how your mapping (with an array for example) could look like:

0  ? a

1  ? b

...

25 ? z

...

52 ? 0

61 ? 9

With 2 ? c and 1 ? b, you will receive cb62 as the shortened URL.

http://shor.ty/cb

How to resolve a shortened URL to the initial ID

The reverse is even easier. You just do a reverse lookup in your alphabet.

e9a62 will be resolved to "4th, 61st, and 0th letter in the alphabet".

e9a62 = [4,61,0] = 4×622 + 61×621 + 0×620 = 1915810

Now find your database-record with WHERE id = 19158 and do the redirect.

Example implementations (provided by commenters)

C++

Python

Ruby

Haskell

C#

CoffeeScript

Perl


Release notes (1.0.2)

We did the below changes in the components

  1. Changes in report Screen  
  2. Create an API module for configuring the domain.
  3. Convert Asset type to service



License (1.0.2)
Reviews (0)
Category
Demos & samples, Security & authentication
Support options
This asset is not supported by OutSystems. You may use the discussion forums to leave suggestions or obtain best-effort support from the community, including from  who created this asset.
Dependencies
Url Shorten has no dependencies.
Application Objects
Url Shorten has 2 AOs.
Team
Compatible with
Version 11
Database:
All
Asset consumers
No consumers yet.
Weekly downloads