14 unstable releases (3 breaking)
new 0.5.5 | Feb 17, 2025 |
---|---|
0.5.4 | Feb 9, 2025 |
0.4.4 | Feb 5, 2025 |
0.4.2 | Jan 29, 2025 |
0.1.3 |
|
#473 in Parser implementations
2,077 downloads per month
38KB
545 lines
nzb-rs
nzb-rs
is a spec compliant parser for NZB files.
Installation
nzb-rs
is available on crates.io, so you can simply use cargo to install it.
cargo add nzb-rs
Optional features:
serde
: Enables serialization and deserialization via serde.
Example
use nzb_rs::{Nzb, ParseNzbError};
fn main() -> Result<(), ParseNzbError> {
let xml = r#"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nzb PUBLIC "-//newzBin//DTD NZB 1.1//EN" "http://www.newzbin.com/DTD/nzb/nzb-1.1.dtd">
<nzb
xmlns="http://www.newzbin.com/DTD/2003/nzb">
<file poster="John <nzb@nowhere.example>" date="1706440708" subject="[1/1] - "Big Buck Bunny - S01E01.mkv" yEnc (1/2) 1478616">
<groups>
<group>alt.binaries.boneless</group>
</groups>
<segments>
<segment bytes="739067" number="1">9cacde4c986547369becbf97003fb2c5-9483514693959@example</segment>
<segment bytes="739549" number="2">70a3a038ce324e618e2751e063d6a036-7285710986748@example</segment>
</segments>
</file>
</nzb>
"#;
let nzb = Nzb::parse(xml)?;
println!("{:#?}", nzb);
assert_eq!(nzb.file().name(), Some("Big Buck Bunny - S01E01.mkv"));
Ok(())
}
Safety
- This library must not panic. Any panic should be considered a bug and reported.
- This library uses
roxmltree
for parsing the NZB.roxmltree
is written entirely in safe Rust, so by Rust's guarantees the worst that a malicious NZB can do is to cause a panic.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/license/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~4–6MB
~108K SLoC