#url #short #shortener #link

urlshortener

A very simple url shortener client library

17 releases (3 stable)

2.0.0 Aug 6, 2019
1.1.0 Jun 14, 2019
0.10.0 Mar 15, 2019
0.9.0 Jul 19, 2018
0.4.0 Jul 10, 2016

#2 in #url

Download history 321/week @ 2019-04-23 203/week @ 2019-04-30 139/week @ 2019-05-07 103/week @ 2019-05-14 152/week @ 2019-05-21 140/week @ 2019-05-28 103/week @ 2019-06-04 154/week @ 2019-06-11 240/week @ 2019-06-18 347/week @ 2019-06-25 216/week @ 2019-07-02 131/week @ 2019-07-09 144/week @ 2019-07-16 168/week @ 2019-07-23 150/week @ 2019-07-30

725 downloads per month
Used in 3 crates

MIT license

27KB
473 lines

urlshortener-rs

MIT licensed

A very simple urlshortener for Rust.

This library aims to implement as much URL shortener services as possible and to provide an interface as minimal and simple as possible. For easing pain with dependency hell, the library provides request objects since 0.9.0 version which can be used for performing requests via user http-client library.

Implementations

Currently the following URL shorteners are implemented:

With authentication:

  • goo.gl
  • bit.ly

Without authentication:

  • bn.gy
  • is.gd
  • v.gd
  • bam.bz
  • fifo.cc
  • tiny.ph
  • tny.im
  • s.coop
  • bmeo.org
  • hmm.rs
  • url-shortener.io

The following services are supported, but are discouraged from use, due to restrictions such as rate limits:

  • tinyurl.com
  • psbe.co
  • rlu.ru
  • sirbz.com
  • hec.su
  • abv8.me
  • nowlinks.net

Usage without "client" feature

You can make a Request object without "client" feature only via provider functions:

extern crate urlshortener;

use urlshortener::providers::{Provider, self};

fn main() {
    let long_url = "https://google.com";
    let key = "MY_API_KEY";
    let req = providers::request(long_url, &Provider::GooGl { api_key: key.to_owned() });
    println!("A request object for shortening URL via GooGl: {:?}", req);
}

Usage with "client" feature

Without authentication

extern crate urlshortener;

use urlshortener::client::UrlShortener;

fn main() {
    let us = UrlShortener::new().unwrap();
    let long_url = "https://google.com";
    println!("Short url for google: {:?}", us.try_generate(long_url, None));
}

With authentication (Goo.Gl)

extern crate urlshortener;

use urlshortener::{ client::UrlShortener, providers::Provider };

fn main() {
    let us = UrlShortener::new().unwrap();
    let long_url = "https://google.com";
    let key = "MY_API_KEY";
    println!("Short url for google: {:?}", us.generate(long_url, Provider::GooGl { api_key: key.to_owned() }));
}

Combined (Goo.Gl + Is.Gd)

extern crate urlshortener;

use urlshortener::{ client::UrlShortener, providers::Provider };

fn main() {    
    let us = UrlShortener::new().unwrap();
    let providers = vec![
        Provider::GooGl { api_key: "MY_API_KEY".to_owned() },
        Provider::IsGd,
    ];
    let long_url = "https://rust-lang.org";
    println!("Short url for google: {:?}", us.try_generate(long_url, Some(providers)));
}

License

This project is licensed under the MIT license.

Dependencies

~1.4–3.5MB
~89K SLoC