Crates.io | public-suffix |
lib.rs | public-suffix |
version | 0.1.2 |
source | src |
created_at | 2023-07-28 16:01:58.221928 |
updated_at | 2024-09-16 15:01:21.491461 |
description | Crate for efficient determination of eTLD+1 based on the Mozilla Public Suffix List. |
homepage | |
repository | https://github.com/1Password/passkey-rs |
max_upload_size | |
id | 928612 |
size | 426,644 |
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.
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);
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 by output-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 as public_suffix::StructName
(if true) or crate::StructName
(if false). When you are creating your own structs, always set this to false.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);
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.
Made with ❤️ and ☕ by the 1Password team.
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