{"id":13637410,"url":"https://github.com/iddm/urlshortener-rs","last_synced_at":"2026-03-03T16:02:46.102Z","repository":{"id":47780174,"uuid":"62555950","full_name":"iddm/urlshortener-rs","owner":"iddm","description":"A very-very simple url shortener (client) for Rust.","archived":false,"fork":false,"pushed_at":"2024-05-14T17:37:09.000Z","size":9020,"stargazers_count":55,"open_issues_count":2,"forks_count":17,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-14T04:47:57.847Z","etag":null,"topics":["bitly","rust","shorten-urls","shortener","shortening","shortens-links","url","urlshortener"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iddm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"iddm"}},"created_at":"2016-07-04T11:06:45.000Z","updated_at":"2025-07-19T08:03:46.000Z","dependencies_parsed_at":"2025-08-09T22:12:34.959Z","dependency_job_id":"df1b7f2d-4438-4ac3-86e9-bba6322add53","html_url":"https://github.com/iddm/urlshortener-rs","commit_stats":null,"previous_names":["iddm/urlshortener-rs","vityafx/urlshortener-rs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iddm/urlshortener-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iddm%2Furlshortener-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iddm%2Furlshortener-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iddm%2Furlshortener-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iddm%2Furlshortener-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iddm","download_url":"https://codeload.github.com/iddm/urlshortener-rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iddm%2Furlshortener-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29746499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitly","rust","shorten-urls","shortener","shortening","shortens-links","url","urlshortener"],"created_at":"2024-08-02T00:01:16.956Z","updated_at":"2026-03-03T16:02:46.087Z","avatar_url":"https://github.com/iddm.png","language":"Rust","funding_links":["https://github.com/sponsors/iddm"],"categories":["Libraries"],"sub_categories":["Web programming"],"readme":"# urlshortener-rs\n[![Crates badge](https://img.shields.io/crates/v/urlshortener.svg)](https://crates.io/crates/urlshortener)\n[![CI](https://github.com/iddm/urlshortener-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/iddm/urlshortener-rs/actions/workflows/ci.yml)\n[![](https://docs.rs/urlshortener/badge.svg)](https://docs.rs/urlshortener)\n[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\n\nA very simple urlshortener for Rust.\n\nThis library aims to implement as much URL shortener services as possible and to provide an interface as\nminimal and simple as possible. For easing pain with dependency hell, the library provides request objects\nsince 0.9.0 version which can be used for performing requests via user http-client library.\n\n## MSRV\nThe minimum supported rust version is bumped to 1.63 just because one of the dependencies.\nThe code itself should work fine with Rust version 1.46, and, perhaps, even lower versions.\n\n## Implementations\n\nCurrently the following URL shorteners are implemented:\n\nWith authentication:\n\n- `goo.gl`\n- `bit.ly`\n- `kutt.it` (supports self hosting)\n\nWithout authentication:\n\n- `bn.gy`\n- `is.gd`\n- `v.gd`\n- `bam.bz`\n- `fifo.cc`\n- `tiny.ph`\n- `tny.im`\n- `s.coop`\n- `bmeo.org`\n- `hmm.rs`\n- `url-shortener.io`\n- `biturl.top`\n\nThe following services are supported, but are discouraged from use, due to\nrestrictions such as rate limits:\n\n- `tinyurl.com`\n- `psbe.co`\n- `rlu.ru`\n- `sirbz.com`\n- `hec.su`\n- `abv8.me`\n- `nowlinks.net`\n\n## Usage **without** \"client\" feature\n\nYou can make a `Request` object without \"client\" feature only via provider functions:\n\n```rust\nextern crate urlshortener;\n\nuse urlshortener::providers::{Provider, self};\n\nfn main() {\n    let long_url = \"https://google.com\";\n    let key = \"MY_API_KEY\";\n    let req = providers::request(long_url, \u0026Provider::GooGl { api_key: key.to_owned() });\n    println!(\"A request object for shortening URL via GooGl: {:?}\", req);\n}\n```\n\n## Usage with \"client\" feature\n\nWithout authentication\n\n```rust\nextern crate urlshortener;\n\nuse urlshortener::client::UrlShortener;\n\nfn main() {\n    let us = UrlShortener::new().unwrap();\n    let long_url = \"https://google.com\";\n    println!(\"Short url for google: {:?}\", us.try_generate(long_url, None));\n}\n```\n\nWith authentication (**Goo.Gl**)\n\n```rust\nextern crate urlshortener;\n\nuse urlshortener::{ client::UrlShortener, providers::Provider };\n\nfn main() {\n    let us = UrlShortener::new().unwrap();\n    let long_url = \"https://google.com\";\n    let key = \"MY_API_KEY\";\n    println!(\"Short url for google: {:?}\", us.generate(long_url, Provider::GooGl { api_key: key.to_owned() }));\n}\n```\n\nCombined (**Goo.Gl** + **Is.Gd**)\n\n```rust\nextern crate urlshortener;\n\nuse urlshortener::{ client::UrlShortener, providers::Provider };\n\nfn main() {    \n    let us = UrlShortener::new().unwrap();\n    let providers = vec![\n        Provider::GooGl { api_key: \"MY_API_KEY\".to_owned() },\n        Provider::IsGd,\n    ];\n    let long_url = \"https://rust-lang.org\";\n    println!(\"Short url for google: {:?}\", us.try_generate(long_url, Some(providers)));\n}\n```\n\n\n## License\n\nThis project is [licensed under the MIT license](https://github.com/iddm/urlshortener-rs/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiddm%2Furlshortener-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiddm%2Furlshortener-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiddm%2Furlshortener-rs/lists"}