Git Product home page Git Product logo

shorter's Introduction

Shorter

You can always be shorter.

Shorter is a simple URL shortener written in Rust. It stores the urls in-memory or in a file.

I am using bpaf to parse the command line arguments and some essential features to deliever the good cli experience.

How it works?

Shorter uses the md5 hash of the long url to generate a unique id. The id is then converted to base62 and the first 7 characters are used as the short url.

It is unlikely that two urls will have the same hash, but if it happens, the short url will be the same. In that case, the short url will be overwritten.

I will add a feature to handle collisions in the future.

Usage

Usage: COMMAND ...

Available options:
    -h, --help     Prints help information
    -V, --version  Prints version information

Available commands:
    get, g     Get an url by uid
    save, s    Save an url
    delete, d  Delete an url by uid
    list, l    List all saved urls

Build

cargo build --release

Test

cargo test

To myself

  • pathbuf: todo!
  • closure: todo!
  • serde: todo!
  • construct! todo!

Todo

  • Add a feature to handle collisions
  • Detailed error handling
  • Command descriptions
  • Guard for invalid urls

License

This project is licensed under the terms of the MIT license.

shorter's People

Contributors

fdemir avatar pacak avatar

Stargazers

Roman avatar Serhan avatar

Watchers

 avatar

Forkers

pacak

shorter's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.