607 releases

new 0.2.598 Nov 8, 2024
0.2.591 Oct 31, 2024
0.2.502 Jul 31, 2024
0.2.385 Mar 31, 2024
0.0.3 Nov 15, 2021

#262 in Parser implementations

Download history 859/week @ 2024-07-19 1073/week @ 2024-07-26 868/week @ 2024-08-02 924/week @ 2024-08-09 1158/week @ 2024-08-16 1216/week @ 2024-08-23 912/week @ 2024-08-30 1149/week @ 2024-09-06 2073/week @ 2024-09-13 1666/week @ 2024-09-20 1527/week @ 2024-09-27 1394/week @ 2024-10-04 1485/week @ 2024-10-11 1412/week @ 2024-10-18 982/week @ 2024-10-25 709/week @ 2024-11-01

4,774 downloads per month
Used in 3 crates (2 directly)

MIT/Apache

240KB
6K SLoC

oni-comb-uri-rs

A Rust crate for URI.

Specification

This crate is based on the following specifications.

  • RFC3986: Uniform Resource Identifier (URI): Generic Syntax

Usage

use oni_comb_uri::uri::Uri;

let s = "http://user1:pass1@localhost:8080/example?key1=value1&key2=value2&key1=value2#f1";

match Uri::parse(s) {
  Ok(uri) => {
    uri.schema().into_iter().for_each(|s| assert_eq!(s.to_string(), "http"));
    uri
      .host_name()
      .into_iter()
      .for_each(|hn| assert_eq!(hn.to_string(), "localhost"));
    uri.port().into_iter().for_each(|p| assert_eq!(p, 8080));
    uri.user_info().into_iter().for_each(|ui| {
      assert_eq!(ui.user_name(), "user1");
      assert_eq!(ui.password(), Some("pass1"));
    });
    uri
      .path()
      .into_iter()
      .for_each(|p| assert_eq!(p.to_string(), "/example"));
    uri.query().into_iter().for_each(|q| {
      q.get_param("key1".to_string()).into_iter().for_each(|v| {
        assert_eq!(v.len(), 2);
        assert_eq!(v[0], "value1");
        assert_eq!(v[1], "value2");
      });
      q.get_param("key2".to_string()).into_iter().for_each(|v| {
        assert_eq!(v.len(), 1);
        assert_eq!(v[0], "value2");
      });
    });
    uri.fragment().into_iter().for_each(|f| assert_eq!(f, "f1"));
    println!("{:?}", uri);
  }
  Err(e) => println!("{:?}", e),
}

Dependencies

~2.2–3.5MB
~56K SLoC