# Url Shortener (Rust)
A URL shortener command-line app. for [bit.ly](https://bitly.com/).
Implemented in Rust, using bit.ly's API v4.
It was tested under Linux and Windows.
You can use it in interactive and non-interactive modes.
In interactive mode, you have the possibility to copy the shortened URL
to the clipboard.
## Interactive mode
```
$ urlshortener
Long URL: https://google.com
https://bit.ly/2R9zFOR
# expanded from shortened URL: https://google.com (matches)
Copy shortened URL to clipboard [Yn]? y
# copied
```
## Non-interactive mode
```
$ urlshortener https://google.com
https://bit.ly/2R9zFOR
# expanded from shortened URL: https://google.com (matches)
```
## Pre-requisites
For this to work, you need an access token from bit.ly. Don't worry, it's free.
After registration you can generate one for yourself. Then, add it as an
environment variable called `BITLY_ACCESS_TOKEN`. For instance, under Linux
add the following line to the end of your `~/.bashrc` file:
```bash
export BITLY_ACCESS_TOKEN="..."
```
Under Linux, the copy to clipboard functionality requires the Linux
command `xsel`. You can install it via your package manager.
## Installation
If you have the Rust compiler, you can install it directly
from crates.io using the command `cargo`:
$ cargo install bitly-urlshortener
## Related projects
* I used [pyshorteners](https://github.com/ellisonleao/pyshorteners/blob/master/pyshorteners/shorteners/bitly.py) to figure out how to call bit.ly's API v4.
* I have a [Nim implementation](https://github.com/jabbalaci/UrlShortener-nim) but that one uses an older API of bit.ly (v3).
* I have a [C# implementation](https://github.com/jabbalaci/UrlShortener-cs) too, which uses
the newer API of bit.ly (v4).