3 releases
0.1.2 | Sep 16, 2024 |
---|---|
0.1.1 | Dec 14, 2023 |
0.1.0 | Jul 28, 2023 |
#104 in Web programming
130,899 downloads per month
Used in 2 crates
(via passkey-client)
430KB
22K
SLoC
public-suffix by 1Password
The public-suffix
crate provides a compact and efficient way to determine the effective TLD-plus-one of any given domain.
This crate is driven by a data file, held in public-suffix-list.dat
and contains code to generate Rust structures to represent this information in code.
Using this Crate
You can use this crate directly, using the included DEFAULT_PROVIDER
list as follows:
let domain = "sainsburys.co.uk";
let etld = DEFAULT_PROVIDER.effective_tld_plus_one(domain);
Generating a Custom Public Suffix List
It may be that users of this crate wish to compute eTLD+1 differently for certain domains according to the needs of their particular application.
To do this, provide your own version of public_suffix_list.dat
and run the included generator script (gen.sh
) with the contents of your custom TLD file.
This will regenerate the Rust representations of that data for inclusion in your own crate. The main.go
program called by gen.sh
supports various arguments to control its output. The main arguments you may wish to use are:
--output-path
- directory in which to place the generated files.--base-name
- the base name of the generated files. The generator will create${base-name}.rs
and${base-name}_test.rs
in the directory specified byoutput-path
.--struct
- the name of the Rust struct that will be generated to represent your custom TLD data.--crate
- a boolean controlling whether the struct will be created aspublic_suffix::StructName
(if true) orcrate::StructName
(if false). When you are creating your own structs, always set this to false.
Using Your Custom Public Suffix List
Next, in your Cargo.toml
, disable the default-provider
feature in this crate: default-features = false
. Doing so will remove the built-in implementation of the public suffix list structure and instead you can use your own:
type PublicSuffixList = ListProvider<my_custom_tld_list::MyCustomTldListStruct>;
pub const MY_CUSTOM_TLD_LIST: PublicSuffixList = PublicSuffixList::new();
...then you can call the same functions on MY_CUSTOM_TLD_LIST
:
let domain = "sainsburys.co.uk";
let etld = MY_CUSTOM_TLD_LIST.effective_tld_plus_one(domain);
Contributing and feedback
public-suffix
is an open source project.
🐛 If you find an issue you'd like to report, or otherwise have feedback, please file a new Issue.
🧑💻 If you'd like to contribute to the code please start by filing or commenting on an Issue so we can track the work.
Credits
Made with ❤️ and ☕ by the 1Password team.
Get a free 1Password account for your open source project
Does your team need a secure way to manage passwords and other credentials for your open source project? Head on over to our other repository to get a 1Password Teams account on us:
✨1Password for Open Source Projects
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.