#uri #validation #lib #parser #rfc6570

rfc6570-level-2

A library for validating and processing strings as RFC6570-compliant URIs (up to level 2)

4 releases (stable)

1.2.0 Jan 24, 2021
1.1.0 Jan 23, 2021
1.0.0 Jan 23, 2021
0.1.0 Jan 23, 2021

#2463 in Parser implementations

MIT license

54KB
1K SLoC

RFC6570 Level 2 - Rust

Overview

A Rust library for validating and processing strings as RFC6570-compliant URIs (up to level 2).

docs.io documentation crates.io version crates.io downloads Gitlab pipeline status Gitlab code coverage Lines of code Dependents License

Versioning

This project follows Semantic Versioning principals starting with v1.0.0

Repository information

This repository is located on GitLab.com.

Usage

To use this library, instantiate an UriTemplate with a relevant string. From here, the result can be "discarded" if only validation of the input string is needed, or a list of contained expressions or variables can be retrieved with expressions() or variables(). Finally, the URI template can be expanded by called expand() with a HashMap<&str, &str> of variables and values.

use rfc6570_level_2::UriTemplate;

let template = UriTemplate::new("https://example.com/{resource}/{+id}{#field}")?;

// What variables are available?
let variables: Vec<&str> = template.variables().collect();
assert_eq!(variables, vec!["resource", "id", "field"]);

let var_map = [
    ("resource", "user"),
    ("id", "5"),
    ("field", "email"),
].iter().cloned().collect();

// Expand the template
let uri = template.expand(&var_map);
assert_eq!(uri, "https://example.com/user/5#email");

Dependencies

~2.5MB
~52K SLoC