From 21c8fd38d09847217cc80dd3230d7a6754e51118 Mon Sep 17 00:00:00 2001 From: Owais Jamil Date: Sat, 3 Jan 2026 01:28:34 -0600 Subject: [PATCH] feat: document import module with PDF parsing and DOCX stub --- CHANGELOG.md | 8 + Cargo.lock | 371 +++++++++++++++++++++- README.md | 5 + crates/server/Cargo.toml | 2 + crates/server/src/import/docx.rs | 15 + crates/server/src/import/mod.rs | 11 + crates/server/src/import/pdf.rs | 13 + crates/server/src/lib.rs | 1 + crates/server/tests/data/1904.09828v2.pdf | Bin 0 -> 160834 bytes crates/server/tests/import_tests.rs | 74 +++++ docs/todo.md | 40 +++ 11 files changed, 530 insertions(+), 10 deletions(-) create mode 100644 crates/server/src/import/docx.rs create mode 100644 crates/server/src/import/mod.rs create mode 100644 crates/server/src/import/pdf.rs create mode 100644 crates/server/tests/data/1904.09828v2.pdf create mode 100644 crates/server/tests/import_tests.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c174a3..2c3731d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Added +### 2026-01-03 + +- Implemented `malfestio-readability` crate: A custom, rule-based content extraction engine replacing `dom_smoothie`, featuring XPath support (ftr-site-config compatible) and a Mozilla Readability-based generic fallback. + ### 2026-01-02 - Published AT Protocol Lexicons for all core types (`org.stormlightlabs.malfestio.*`) + +### 2025-12-* + +- *TODO* diff --git a/Cargo.lock b/Cargo.lock index f30e0fc..3214a1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,32 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "adobe-cmap-parser" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8abfa9a4688de8fc9f42b3f013b6fffec18ed8a554f5f113577e0b9b3212a3" +dependencies = [ + "pom", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "aho-corasick" version = "1.1.4" @@ -241,6 +267,12 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.10.0" @@ -256,12 +288,33 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + [[package]] name = "bumpalo" version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" + [[package]] name = "byteorder" version = "1.5.0" @@ -274,6 +327,15 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + [[package]] name = "cbor4ii" version = "0.2.14" @@ -301,6 +363,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cff-parser" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f5b6e9141c036f3ff4ce7b2f7e432b0f00dee416ddcd4f17741d189ddc2e9d" + [[package]] name = "cfg-if" version = "1.0.4" @@ -341,6 +409,16 @@ dependencies = [ "unsigned-varint", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clap" version = "4.5.53" @@ -381,6 +459,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "colorchoice" version = "1.0.4" @@ -464,6 +548,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "critical-section" version = "1.2.0" @@ -691,6 +784,21 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "docx-rs" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f21be13b97bd2924f30323d674f5a8db382964972825abd93f30d08f21dad98" +dependencies = [ + "base64", + "image", + "serde", + "serde_json", + "thiserror 1.0.69", + "xml-rs", + "zip", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -712,6 +820,15 @@ dependencies = [ "dtoa", ] +[[package]] +name = "ecb" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a8bfa975b1aec2145850fcaa1c6fe269a16578c44705a532ae3edc92b8881c7" +dependencies = [ + "cipher", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -818,6 +935,15 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "euclid" +version = "0.20.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bb7ef65b3777a325d1eeefefab5b6d4959da54747e33bd6258e789640f307ad" +dependencies = [ + "num-traits", +] + [[package]] name = "fallible-iterator" version = "0.2.0" @@ -830,6 +956,15 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + [[package]] name = "ff" version = "0.13.1" @@ -852,6 +987,16 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1034,6 +1179,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gif" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "group" version = "0.13.0" @@ -1502,6 +1657,22 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "gif", + "jpeg-decoder", + "num-traits", + "png", + "tiff", +] + [[package]] name = "indexmap" version = "2.12.1" @@ -1512,6 +1683,16 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "block-padding", + "generic-array", +] + [[package]] name = "ipconfig" version = "0.3.2" @@ -1593,6 +1774,12 @@ dependencies = [ "libc", ] +[[package]] +name = "jpeg-decoder" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" + [[package]] name = "js-sys" version = "0.3.83" @@ -1635,7 +1822,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ - "bitflags", + "bitflags 2.10.0", "libc", "redox_syscall 0.7.0", ] @@ -1673,6 +1860,34 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "lopdf" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7184fdea2bc3cd272a1acec4030c321a8f9875e877b3f92a53f2f6033fdc289" +dependencies = [ + "aes", + "bitflags 2.10.0", + "cbc", + "ecb", + "encoding_rs", + "flate2", + "getrandom 0.3.4", + "indexmap", + "itoa", + "log", + "md-5", + "nom", + "nom_locate", + "rand 0.9.2", + "rangemap", + "sha2", + "stringprep", + "thiserror 2.0.17", + "ttf-parser", + "weezl", +] + [[package]] name = "lru" version = "0.12.5" @@ -1756,12 +1971,14 @@ dependencies = [ "base64", "chrono", "deadpool-postgres", + "docx-rs", "dotenvy", "ed25519-dalek", "getrandom 0.3.4", "hickory-resolver 0.24.4", "malfestio-core", "malfestio-readability", + "pdf-extract", "regex", "reqwest", "serde", @@ -1865,6 +2082,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + [[package]] name = "mio" version = "1.1.1" @@ -1939,6 +2166,26 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + +[[package]] +name = "nom_locate" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b577e2d69827c4740cba2b52efaad1c4cc7c73042860b199710b3575c68438d" +dependencies = [ + "bytecount", + "memchr", + "nom", +] + [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1995,7 +2242,7 @@ version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags", + "bitflags 2.10.0", "cfg-if", "foreign-types", "libc", @@ -2080,6 +2327,23 @@ dependencies = [ "windows-link", ] +[[package]] +name = "pdf-extract" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28ba1758a3d3f361459645780e09570b573fc3c82637449e9963174c813a98" +dependencies = [ + "adobe-cmap-parser", + "cff-parser", + "encoding_rs", + "euclid", + "log", + "lopdf", + "postscript", + "type1-encoding-parser", + "unicode-normalization", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -2220,6 +2484,25 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "pom" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60f6ce597ecdcc9a098e7fddacb1065093a3d66446fa16c675e7e71d1b5c28e6" + [[package]] name = "portable-atomic" version = "1.13.0" @@ -2259,6 +2542,12 @@ dependencies = [ "uuid", ] +[[package]] +name = "postscript" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78451badbdaebaf17f053fd9152b3ffb33b516104eacb45e7864aaa9c712f306" + [[package]] name = "potential_utf" version = "0.1.4" @@ -2442,13 +2731,19 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rangemap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68" + [[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags", + "bitflags 2.10.0", ] [[package]] @@ -2457,7 +2752,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ - "bitflags", + "bitflags 2.10.0", ] [[package]] @@ -2584,7 +2879,7 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ - "bitflags", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", @@ -2710,7 +3005,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -2723,7 +3018,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -2746,7 +3041,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "feef350c36147532e1b79ea5c1f3791373e61cbd9a6a2615413b3807bb164fb7" dependencies = [ - "bitflags", + "bitflags 2.10.0", "cssparser", "derive_more", "log", @@ -2929,6 +3224,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + [[package]] name = "simdutf8" version = "0.1.5" @@ -3131,7 +3432,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -3225,6 +3526,17 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + [[package]] name = "time" version = "0.3.44" @@ -3429,7 +3741,7 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "bitflags", + "bitflags 2.10.0", "bytes", "futures-util", "http", @@ -3522,6 +3834,21 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "type1-encoding-parser" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d6cc09e1a99c7e01f2afe4953789311a1c50baebbdac5b477ecf78e2e92a5b" +dependencies = [ + "pom", +] + [[package]] name = "typed-arena" version = "1.7.0" @@ -3790,6 +4117,12 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "weezl" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + [[package]] name = "whoami" version = "1.6.1" @@ -4130,6 +4463,12 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +[[package]] +name = "xml-rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" + [[package]] name = "xml5ever" version = "0.18.1" @@ -4244,6 +4583,18 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + [[package]] name = "zmij" version = "1.0.0" diff --git a/README.md b/README.md index 2915652..27de4ac 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,8 @@ and sharing progress & notes. - [Information Architecture](./docs/information-architecture.md) - Navigation and URL structure - [Data Model Mapping](./docs/data-model-mapping.md) - Lexicon to database mapping - [Roadmap](./docs/todo.md) - Development milestones + +## Test Data + +The file `crates/server/tests/data/1904.09828v2.pdf` is included for testing purposes. +It contains the paper "Magic: The Gathering is Turing Complete" (arXiv:1904.09828). diff --git a/crates/server/Cargo.toml b/crates/server/Cargo.toml index 251d96d..7e1650b 100644 --- a/crates/server/Cargo.toml +++ b/crates/server/Cargo.toml @@ -37,3 +37,5 @@ tracing = "0.1.44" tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } uuid = { version = "1.19.0", features = ["v4", "fast-rng"] } hickory-resolver = "0.24" +pdf-extract = "0.10" +docx-rs = "0.4" diff --git a/crates/server/src/import/docx.rs b/crates/server/src/import/docx.rs new file mode 100644 index 0000000..8260a65 --- /dev/null +++ b/crates/server/src/import/docx.rs @@ -0,0 +1,15 @@ +use super::DocumentParser; +use anyhow::Result; +use std::path::Path; + +pub struct DocxParser; + +impl DocumentParser for DocxParser { + fn parse(&self, path: &Path) -> Result { + // TODO: Implement DOCX parsing using docx-rs + Ok(format!( + "DOCX parsing not yet implemented. File: {:?}", + path.file_name() + )) + } +} diff --git a/crates/server/src/import/mod.rs b/crates/server/src/import/mod.rs new file mode 100644 index 0000000..6e358b0 --- /dev/null +++ b/crates/server/src/import/mod.rs @@ -0,0 +1,11 @@ +use anyhow::Result; +use std::path::Path; + +pub mod docx; +pub mod pdf; + +/// Trait for parsing documents (PDF, DOCX, etc.) and extracting text. +pub trait DocumentParser { + /// Parse the document at the given path and return the extracted text. + fn parse(&self, path: &Path) -> Result; +} diff --git a/crates/server/src/import/pdf.rs b/crates/server/src/import/pdf.rs new file mode 100644 index 0000000..7eee3ed --- /dev/null +++ b/crates/server/src/import/pdf.rs @@ -0,0 +1,13 @@ +use super::DocumentParser; +use anyhow::{Context, Result}; +use std::path::Path; + +pub struct PdfParser; + +impl DocumentParser for PdfParser { + fn parse(&self, path: &Path) -> Result { + let text = + pdf_extract::extract_text(path).with_context(|| format!("Failed to extract text from PDF: {:?}", path))?; + Ok(text) + } +} diff --git a/crates/server/src/lib.rs b/crates/server/src/lib.rs index 9a78847..a2d81cf 100644 --- a/crates/server/src/lib.rs +++ b/crates/server/src/lib.rs @@ -1,6 +1,7 @@ pub mod api; pub mod db; pub mod firehose; +pub mod import; pub mod middleware; pub mod oauth; pub mod pds; diff --git a/crates/server/tests/data/1904.09828v2.pdf b/crates/server/tests/data/1904.09828v2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fe5fdc11ac28eca41f496075d20909046765e650 GIT binary patch literal 160834 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%0Aq1UQ4Qm z$-#`rQ)8|%Bm2`0IgKm2KOTI#nqR%9uI}u`i0$t=-UNho>fGr6Dw>fhL7gFgtQT#K)sv4~ zn>FjQ=i17L@|}luHqYZvKlb90x#rvVcQn{GeqAZ|+Q6?AfjU zb(`U8`zh9zt2k3n#9Zs=x!&0l|C(imVEvN?@g5F&-pXIZj2}H(IQeYF?@RyPUQZPN zKj&IIvvfq%hBcG*o~yqVXpvTuWPJT?!@qYwE?Xt@PV>*Jnv}5POn;X5bH1;kTeVpQ z)#~aT*J&p{U)cIwdjIupDrb(KWXVX4RPyJWy(56-RQKCc5feJCXB$`iDBAvR?InSF zXQc-`Cv1hU@2=vIzfr`^yHuvr?}>he-`9P8=?jW7OcGY;C@RU_6!U$($46H2(Z0{q zYvi8AJm0&qf4+MEzV9^)^#YdP=B~JS^zi#ci~qdycW3Hu{}cFBtzGx#>DZ`%AII;# z4lFrWw~_y@U#s}ylg!+E*8CGO5_WmL;?>&)c^zl;PKRAN*&DgrR#yDiBWv3SQSY`o zoU(CS8&+`Xw%+RH&-VMRvg#23U1i{S+h@IG3ZNzeqBc<6G z1E=TbR%BVn5`&bVVp-Evz0ZxIm5TpTAOua=w>bvolC*nyQ)OgBVS1`639P% zbhcCLDK6FaDK^6Irm24UJi$MG+W9R<&+*vJD_4nL@=R3j$hF$0b?dJk=;7*}d}!;P z>tzaM8O%S{m3Q-cg!v!N-}dT)zsf9gpIx!DFZufYm~MGYuCTM(he_Ds`Gk3KXD+5M zmg_%#K{Hggbb;x@9beBFKY!Gy#q8XX*AxCwq3^ZVXF;hWpS6xZFBSh@yY{%ooyo6~ zCm6n&d-gh)sQAMJ(VLzZ_DZP>*vGB3E!PkBZkfLKQ~&LM>PhD(#=Dv2fa#JKWy8p67`$%Y9 zOILnXVp2T6@z3p=UkmORCku&bpFX&GqTKoYQ;#}t>;Gf?*mD0fsP--X4dKYm7Z=Y;*wo3|XS_`A@~>(%Oy3-^4U)73Wjo?Jv`DU0T@ zHs5>Cgk7&J$X(j;cj7gAs=Cyp&Y;`D8|W!Li^iDRLjRQA=@7O}mLcDooE`c~3sM(+IVnKAl{KL)hK-rc3Y$ZAdL z>lKNU>fP&-7#n-~cz9D5ct_WFMO=QMcyWP;>xYC)?zT4gUK+%Egh^hsXi!oPz?Ld$2L=M}3He$%^k!rEJF%BE?x->g&LV!T6F zR^w!w)I6SJ7VOIB<~*MHx^~_9MDD)!T^2893heqfX^n;AKY@Q$&tu<)O?e_Lw7y&P z$GW*cK8mHtwtk+xPkGhCHP61zdns}ChR;-Hkv*nW+mz}uIcmh#9Gj4P!T*v+A4^*0 z{9kg~$tQm@mQS?#JW=Jq%(zA7_q4UXHBaR>y}vYN!N$FjdFdf-@$Q=UW{8zoyVh)c z(W_hK{^{h~6PvUqTXXcT3|-kC|M}){d7EG(zo}dJC*N{c zVJFkuCy!5_$K#*mta#p{BH!!QwCNIxNh`L>PpzN5;BIYR(37toEFY7dm0$06-a1iR z{mY_X9BZaIZ!8LX*S<+9Y z)A(lPP0iO+j;2454UA0n^9cUO7`^P8=!H2B*LQdBb{2fRcx_~-_AmB}JCogyE@>`M z`8VMTSD@n4t`zkrU%vT;TDiKIn|_#(|7dpDt%apK81_c{CInULZeU(AOFh*(!(Oq! zyguJTD#13ds8Zd7d!xX*N16|uoC_^xDb$_ioyND;lHL1Hs)hKepQrvs{*hd*yF=%U z*{R@<3pVZg=H|+-DwkcCB*@Wu&xn88^Aq3i&W@cVqtzrXs-0!^mwl2H^VE}vJHo%r z+YsM*CQV&`es}uEYUh)>KN{+#G_K9iIP_C|#rjy!r>N? zSa8{FT(W1w!esx1SGn>_6;E7J`1H}TGfu=jE8_N5Hd*7zx3d4AG zokep_JZG7G!0^e#Q-4c3xMn=aNZI4eUnZp}d7wJLapl)Df$LrcbS_KZxR}d%Q}k}O z-##wE8(F_e7jBH>%-#2SL5YP)l!2P;#{5q9_lC0bZp@KkIoto1FIXnbSK#CSopD`T zp55`!xueQo7*YJZEjiUmv*plXhmCqKL>jnvy6`Ypd9^dFJ1=wV$Gj@8mfK3}%KQI@ zPyD_1KlhC#y`t>XYf`=a&jrkwbJ}t#WA?j}ik?Mf^Id0sikuVXx=WVPZS+L>@3f@yysZ{fv!cfP4upt>^t?{M$>-pnZrL>^*-!b zGt16UBk7INo(U)W+1ae#Z?7u1&HYgM<=yjuIiV8Fe-uJwlx8}AO8B$KRN>UqfI~kX zm7YE>^yqAA5m%v?)jf}gwYmAPvOUO_Q(&{%dcBw3fi3f{ODxZ3&F`v- zow_@_=$%GR42Ozi@{!BgYYI1haamodm>tBgv3KqHe-qMI+BOIt{j)4a{jKK|unU~J2H3UXGc5p8=^|5*UQ&^^#5?ap6M{dpJ*s}aXj z8ycGvv+(P6)SLZCB}{`ouCe_vVn`F|zp z`>M*G_m{i;_^9>w^N-)Fck@4BT)6(ule;=ct~M_(e>D4%*RRT=Z>Ka(&z`>8{Qmu) zy3Yx_Ut~_JyZI+)cXNFD!nwEZ+7J)u^Y-0& zcgIHe(vf{%nC9PoHv4T};N!qpSBmrL|-BP5%=1*@lw)W8NMy;(T~ntX}Mdv-al7 z9i;{fD!0wv-l+EEk=gZVQ^#s8ox6M4%j;^N_lH+SG4Z~$xv(%?Y+32k7M>Cgk=pP7 z=K8;@ul)M%?QivRyPw~@?)-c*{m1pY|9|lO+xh?V>iKtemj8csT|LN}N4%bzU{<>*ebzJ?nFV*y?$oWKS-Fbf6 zKl0EE7c_O*?PfCvGq3Si5}fQ^x(;y916-sgM5t<8Rq=b^WD< zOMm8V->A7MRj4oQj`1BE#&%Bg(`R38DzQ4ea9a4a!z(+g)jo6Hs)%V$owUIzzWhkH z{q@ilAwT#1`L(L1D$IPdS@217y@yF6l}q!2qTHDEuRo5fUibUgw2s!==W<7Q4c>Fl zuiiALd}i{0js9O3I`@7^xZJ6_n6-~5r%G_uyrb$KtO_i)UfK`t)CI1(@OQD1`l*?R zF3wDkOey^}q2h|4#saO_mTlc7YGS*8%AU%9y;uJ^ALrtC-#!{?v4GtdMtj{MRXU{k8@^(MPM~CG^;v*j=P;G)_$KpTYjR z;8FRqi4)}eSnSI#Zg=ce@S58r?enqL)p)MXwsl>t&MH+8B~ye{gLg>sD0H|ryM&)J zxuhL9NAtX?E~`}aJUO8})z*#88%6RM)w~|EdS3V%Wbs|9s`@B{DpTsU?gQQrY<2z} zuiG|fXYXd#1>cj>Umr3)k>2g|Q2s&A-@Y|U?I!crzu3bpSFq#4q>rMR%bV`l{8+Sl zqVO4+^;KNqv#+nJ{%iSL?6y&q({oX+&>cb1KlL>If<7$o_DJb^d0O)s!==(VU*{h7 zB|on(S*XlEx%9@lqx_d^b{;NyC^_Y@$^A=-yDl<)O^K@fUhe#{wZy5STy-ATUHgzd z|1DQrTuI#f>bA%yg^x3znsuD-I4yX;HGM*7zt6)>N50424m-Z6Q&K(HcO(DLI+=%e z&0Ejgb@HD(wSEn^#ewP3TO9Q^zv!|2a64kFg3T8Bl=D5>r#duvkDb2hrSol6SXGy{0{nMl{p0ldCQ;OG=cZ`yff2+qwJU5 zd}p-mN7?JMD!o~ar7xePZfMMkeYxS^iCY(}k7=)F`EU7f#?+-nWjkN5lGq->Sg`2h zx{X_}^wxwOi=XIW$;N)NNUUIzp6@iT*aikSYVq@h?h3ZPu8O%P3ojZ`j%~(5S z{^Od(cfH@I?3ljzd%BOZzXtOHEAL7{f%`MtTpI2w7X4rLexpR4G>1a~W8oXy8(yZ3 zKMdBeZVK;-zVE|%2{h`aohVm-!93|JoK_f@lH>&h?jDO zn&D1~O|qO$m9d^f{$auD z!eUJ4YGxVx#hrhlzptidx!A#f&Q5>!-F;QLY156Y&oUpJw|zO3^KR;m-|~yzJ9`@a zJwDgsVC45@iglsJwcRS_{CRw+#NMDgMC^xv z@`=+0F9r7O;i*0FU}5S3jXz>5|F{cq=S}oYXeqkU=@Dup7;4qZ~``tw#SRzGQ_@Y~W=N0%oEZ|0G`n|ex| z@5jmDcgfRoPS?D$v(r1is#j^p2csB^ki|NO{|H*kGiR^S$YkB&_0d2g;sMKoDFv^2 zCJJp_a#1p*DYZUy`y!ii4*lt>y9*i|<2Kp3J#w2O98qz2w@37PiFJRIj&7AMn836` zrPF`iZjXjH7rQGH<7?v1+>`u&@%RLB#+8sr@-on79pPtuZe~LzW87=$I$D1i59GOtWcVc2A>xHaik2nfB zgR)aNZ+%|6^sth^a-V5iTq76)TG$%>_>z9j_AaoYb@L|1QNx?~+fvRfsio`Jl5^ONvYB&#pc5{GTMT)-Ia5a-**M z$*|&g9KncvH?>A$i&}k9+Ihh_rgU@8NZ+*wMuC_FnS(7gZBl6mFl? zGWlY?n|<4o!1d?c5(J*OBt}Uog*0z#?lH8Rvd|{YkgJU0_tqV0v*XnjQ%qS6ZQ1=) zCLej=_BevEuxr`M@2L!L11?Xm=VFoE@=C9%O=wEvCgjJ1Byx2BJ zSvZv8oMyRo94&gdYu_V5+?0~~4>RAr(QykDJ64EFT+ zvnlL&mtEkGBaB%O%0vSGD>>8|ZeF@Jr><+tyX2xO# z-lnb9dIpx?zlHw&!CNCD;jHETQ(uBPL;ZjkZ;*xLlk^Q8Y}1!(ik9u4qL5u3F*RxN zs;LZTBu&Z>>}zCw#IZl?iuM=l$JZEHy%RjQsi$UsVR_rjP_2D^Nh5Ej!MA9onMVJ9 zE}Xvi;n&w~RZ9=G-dtSZt*g#_B-~Y=vGmM}H+4Kw5{~sj_sZU~mmPb3QC~_jJaEU9 zhL5%Eo0ghwkSXH$6Z|_fI@NowTJY`ZE`eK5c#0of&6;v#{9(614Yj3-gh&zp55Hgy;WmjXpUIrJ^l@L3+5+2(3v8i)hOv~k~c~2 z(CRSrC(@@Mc=s3FDiyoUshE67w{p^i7pMI)0-vsGPTX5GQ=zWzQ)S!ogGVMFl%09) z^{*UZwrzP|6{6$=f8Tl)vRsNoEC1;_hRuuAzqI#r_%>}>)*}7jrb=qhtCf08$?l5x ze$R{GWWFqMZ-4z_-^D$NS<4Czn(ln2`o;9&cRyawhrUau+}!QRpZsGU+qOqJ;&&hV zBt0oN$@R=&`nHhq)5qw&0-KpKyARYC$;7$qyogym$xWyK0MF{eG?sdE@3dVPk64NF zGKL-B)qLRVoT8phlT8}#Xf@^@O*{T7%cc2|?xj7M-RjM+yMB43SKis?{+~xTobl75 zpweXS6J1B7ydOEP4f)h2%-*{~$GZCL&D|XLou;G8RW9&h+4sqpS8bG7b4J}!%QkO=)rwsVAEj>BZMI)qt1M}Cx$`;Cy|Cn) z)09rV6My$%l}GZm11>i`e$AXbg<-9zRmHPcrG;iU9^~nmG#keDC&d0Ndb>HJJ$8Cl zM*o@E+BI1}HO*SXx)j(GnFC)0mtB&d>QKK{my4xrL;01BA&xR{9~ez!`!TG&rh40>$@IvVAkNC=6Q`8@U=%Rhk#;^T z(C+$7l~z|?fsZ}P6>T5nDvR$4&&hQ&+~Y1?D|}DcaZ<>$50W>N@2$93eTu1CYDe^^ z^XH9R3|#Ei-)@sww?Ls zp|PyE#*wBQdjCY{v;JI?tHJCS_uBS@5y#3u_x8VieYj0e<)w2&3iFzcuNH5OzVV>o z{Q8dv_A5CYsy^BEHcC%Dy;-oh_2gO`y~dM*6|NN#meZ>E+kD@2sII!EF=6g}Sue8> ziyk*zxN*Xl<%jgP?t8oDvst<{zAR@73;WhLasInVqqWg8VPPZ^T2akg(uIGmgm_uzj40T z_78;;HTz%7ealhtJD{_-IyRZ>z^3CTXHQ%EsaUD^){ki)RupPqtDh77cKJl1X&o}! ziU#|(Brlmf^W(0L&x*;)76)DYs;A2Ax%ID4d842GbZ!~b%|G9UNk(`&&d-V2QN7r9 z)$8u$!{^L6>JQ~!ZZyBQ{7V}HSg5i!>q1N z^4`h`EBN_2*w7?Sk$6q7k zj-<<1zLxx>(b#epARH}09({ZW@kU*51sY8L@rv) zc^E0i%n@iir&ZF|?CEXw=%wm!(>!%&+jQ4#ect#X_gc}`PBRZ<&KU>O=l)lFA7*(} z`}ozW-81t0Z?5}em^+=}+ehBp5!>TW&ihzkTFxS*dcey6ESLY5X}c2LBUWr$_5Up6 zdY<>Lw@-6qg{;qfxzO|UfeBhW`;V*dKBfGwLeA5$dTwZEoK>;^CXMy7ck0(W%h%p{ zd4a#h^rrr%?u;4i545ATPGs-@v_UQU+j)-Hs{%6_wrG>fn|N1hNtPYw-Vd-zA=35ncckY2>1KY75QOTqdR%4b{<&r)Z6lLOtN;K zzZ1u@YjcdZo#j$;3wZLG?K-#fvlWe#JTi7NOcpP4km}d^DtK6NVag}nwk6DI2PDMf zWX|Z};$_ zP{6I9FQV?BPxsxC)}HX|L~&A-^&zoU7w(m1Mz6@UNSIcUv@i4JagF2d~sViqyO%$b-xN$ zZCJo^&y{84k!T|(^%ysyIS&6{AE}A>In7!1BjaoKsNc$cmp2~z$9y~d^=j{j3QH~~ zT7;&}+Vk**@A3aZT>|$qwI4?Kmj0f6l=sR!y-Q~7GgXXdNl1KevtsJ$?@kLfl{vnu zb^FgfuR7H|!+SP9=FME2bFwpFb;pDQb*Hk^^4XlGZrx%1`^~MR1rlenmp?OI^5>0V zjH}MFZ>>?s*!n&y9*@4kzJc$0s$s#Y7h!^u+sv(8McE`@Ja?8gpMCfG({~RKNuHg2 zK#OZtxbN(XZ8r9*8_zwIy17YhLFgBsZ<4JKD(=;^}ej(*S(}TyFzYj!753k`Wz7x-B}(>Y&BOmip|Q<*F7Za_T==m*DayUt0FmN zR~OyCY-4@xt>8WOm5Mcwd!CqfyxtOWYE#Pb*Heyjh%6Fdy}!!S$Zp50iZk=W%&&do zdKa>l$5{RH^gnj7>iaVfr+lat^x7oD{Cw;5%a@k!6F;xt|FQ6{?V6?6W49k{RF0i= zFQahP?{6A^*SP&N$f|!oBS1drQ22ZaD~0a|cSvqLKIeTfOIGM5v!K2&rM{c@l)bzw zw*8Lw4%M{C=02aRj*n8+HvEhY{TRk!>8ii9ODM;wE63=@hYK&4rg^>Pos%=S@nGO; z+4sw`PEQa?m5$?DSup$m%_fEoX=1#W53anKT9ntnYk4pK^aFQKe5wh_Wz<>!vUK%R z=I}$i_BNk5-FNcQA&D&JXP;Z`H>6z*wQS&s?wp@J{riRjxk-EuE>#^CrW@i)l7C#8 zGGA@|sTDJLAEqD4bo>>SE@&$33b6dM1bE?C><4+IIn6dcL?GJ&5+Hu`VQ$8$8%&}CTH?{W7 zk7bjpF6}zednvY1ps8N@Y+{U(m$b2RI^P}l)hDg=V&??5i2ge+m;cb^m$6ry#I%P8 z&nxdRyeirGZqnhf(m56alk;q!XguG-QP`rh=Y>mFRMSN{X$8lg_^KmspJ^qvbxgaL z@WubA-htg=ZVcO2>wQ?wwx7@8wbT^8P1*lLiquZ>r379MKfQ2I?CyrVygf%1-?`3_ z=nQQM5}%l!b0D3$Tf@Hdy7nV4)fpyf=OdJaPt;w%$@ADaR4?uHN^1+&?1|edduIi_ zbj~@=GMTl1wZ-l7fY}@T=Ipy9_MT_Ku3!nDX%p5NG7HZBYvm=cZkMb3>>0Dd-{`x4 z^0#OFKJ-F$n)bd^Cz9thO^vqVdd8mUyIqJoUu~~WoOD(tf8xjWnGL!Jr}fxvjF_4!qa&Gm^VrMp^B$MxzU7=&vs*~(WXq0Q zx3`#{l8P`mtA5X>=X=PkZCV$1tvOw={WD7kb8*Na<(vA~{Z2Rf&EXNhXt2!MJ7k09 zHrB2acE`kI;_mM5>wP;0ymdhpW)>D^vFD3Y+8Wp``6#5E}P>v zyCJ`0vB~wkmzzo=os+v?6|ZAHAF}I{-j$vyIl?pgvTN5{v1{apw#y~it$lqiWsPUb z%b79W?u+_Df}?I6d~MUd^r#f;xzCY*b|(9~f1ag!qSQ&jb&sxi?JR+{k-N@aV>eH~ z-(H&|`eO5sF6U3p(`~+6iHLsOVA&#iu5Cuf<&MLl2fQD3KIGy}o_WE#N4^mT2WwBC_lcizsMQ!gji z?g(GIF3Y&pDWkV}sp0%<66+;|P0IP6KeBvSc>HUF%4Xi=Q%5;Vl|wiMKWyT4JeboU zv@=WpE^|u)$Ml}I2{(&bnI6AOx3V;3(+c@)pw4c_8r-Vpay-oIVe`VUeVu!r9~4r` z<=-B3bl1mIt=6Si3~d}ZSryy_8&2onn9b$Z_S`tlYj*N3)ukp$Kg^apPWvph#v#w) zvF=v4%o8*BSpB$q@NQVK+`KyiEN|Rn=4#J+&331GrNncoz6si^uRS`sgyZhTiA8f) z%Q{|>@ws;L&JBxQeM?K5O%FafkTX?R_iV`r7KV49i>8=_^>grFJ0W;dc8k{kRc?X# zOO$h#tPPrSNIevU^u21w=0HcYM|3yi;jzoKsnrQ7>W=sgt@Vs@4y>IPWy$cpzuO)(f*Y?i!Vv=*2yxn-}lsQH#3S6^nq&e^1{^PHz zIq6N5<$KO6)3f!@hNvd=AGgoH`{a$%$xab^Fta-BS2Iae(c^KAAEfP9+ak-vwAjgIJYsQ;|8{%ufk*(k;) zxh{-V@vY{X`dDSIwhqPC2W1yO$0;fTBVX<5#9 zm$JvK$Np^JWgEBZh-g9Hb1zr%^S%34U%71guORYSs>U-X_61CH*$g_5IM*GG^*(s` zllc@D??=X13U^#U6{O$++J;m57;nv36S-_4x(E_vEvwyjf_ z+g(uGCZHvI>)x&IJMk+HKH2@alXH2O_Oj5Rt*$#BuJez5$#nInM_JSPxTL};S*}kT z9n0NsnttA^x$(?fgYX#&3|8Ke0BO-o{4bg8MiIHv%YLIn60+ObbslW!o%5_o+@@8xzB6a^lm&$PyJ)l z@HF;}v+`{(sUI!B5=2R1@r&44|ncK zv*vK-p6Qac=73l4Jfr(s8-6YgUfZ~Gt)8KL@TE16+#ULkma6Vwc$Zbaz|`ci&4#rT zXRlUfs}A+Maoy&A-JYba7A+5-@|EWJQ1Fkzpj-InPx43(3AP5O3$ zv1+z=UiG4rCjV|kedoT#a_qv7{q4^V-no2#m4UBhQ=Ojb5AodN+a?zTO`G^u#ci_Z z%*R@sGvu`|-q7k`ZU}Y}n2=f-lG$`)O?zP6!b9H5o?(GvJKT7ATO7D87A_JfFtvAm zCS9)+(V&|&`|N^M>s@B{9&G>qX@R_!xQe~jJ>D<67v0(>?3%u(@hR_a*QFC=iW@KR z+SIc|yj$ti;8{>n>AWfN&RR{wrN0`Sk4@X3yVE6E?#A;3tB`PuZ2mGLE??9RPk!v`bg=w>w!i{A$@?ikKKgCn zYBtLyXb<1T@~WdB^$zI#y=hS)u{kH`JhS#{haWE`+|>>`)c!u6I(ORaEe4BLOUd{+}ot4!rK7FZDx}GPO?%)6V+~p0+B&0$%n9P{*rO3UyI6DD*pGdzB(xY{jyn^6Scb)$Qe&g~GW)ze${RIIRG^U`0F zR+TK{lnFbpsjr{6H&gED2fnN9|CZi&Pu-B5G$}7#fZ1oq>ylpqLQUdTGeV7@FSgpe zKFI6d1e;msR&;JOy|Y&=)nwtR%;eCg*XP}D3-fy}Yw5_CxmP!*Lv{YdnO{|kcO)I- zy}b6;j@F!4E5jD@hh{z#Eo5DDb;+ba&!yI`ff85#CgsHxEq>AXJ=Aom-nxpbSJt%e z;#mG{UDMOhod?%%udZJa^?O2gOZ3v5X5Bsm#-k-SSkIMC+uCm7>Xpj9ev8l!$7sXD zNBVuVc6O`j+CQIF62q*_7{#))D6=(x^@-YTZ+~Pyo1Pfbu;9PB+3pJe@MkW!3+F7d z&WJxUt7XpD$EDTRF1P%WUUd6H<(95<(~1R3wz5tN zEnDU{>EFLMyZRP}+Z}syz-s0(1=FP`SXPEr^8G#=crfw#oyZwJ1)N^SY3esC-T0j9 zUn%8Rg+)I4b;EGqZ4tKnn=*KJ&D58iTl+y&+W&6Xp4hl2PF}fd=cVY{Ez9!U)Aw2B z$)TdnG0WcE>ClZ}wE7=WxutYr8^e~P{kaDf{f_)L+}*91lP0iW)2hpYCmICU40#b;TvsopCidF?NZmK*jmkHw=%@oo?Om$K&dmWP@F@kvC+P zzj*dxXP`d+j^)3&1Wq20D*aRZxO;)euC}mM{TnuZVp$vB!)3p5C+`}Sn8uaoPE07R z*ss1&Bkr4z?iu+AxeqJ4Ht9vF#B9Bze#S-r<)xzs+kUNeGnv!Kzggu>UwLcV`t@&w z8H&$8mTXtrQM@_wJ{v<2H=p5nZ$?!7f2ufNEA3g?lH6TH^=NhcA!ceoTZbFVIS>tA7c{;)Ki=VHyQLsM@s zOj`HftjI#G^5jNteTAODGsTldr^jr|VP17{&(FDe=c{{|ENl$sEnoXN(aPPgXxZ{8 z*XN!}UEw$N(zp7Svj*;t+NNYM>)P>~OBpBhUk$s?QWMTOQmrt8Ntxu$Q7JJj<6VYdO?Tfna{zbR5+w!x47V81MW%D_Ox6RjtcCpPl%3d&O=Mr};~t2b;U8PDuXy zu5U@vgR-ZZ+N*hICvQpLe=_EB>Sr~v{c~Lnrp+^T5b@1o%71-p|DC-H*KwcV>0aP% zxVf^|?r}kcy=?xn-vY4{{VbjwKk{4PLeG&44FC984((rJ5@DVvb720h%*d;T$6i$O zHT^2;X$pxyRq#8`lxJeZ^ZJ$pOZYZt7OY!_rK+#qo#_3Q<^6q$@)>(*Z{T2s5?Yv`J7f_#B{ zudQW!_3@&oYzOZ#$!R>hcLg1|C0qJ1-{{6vGp>Sz4`S|XO_mpD2q<)#7r(CB zO3VCM;(@7~&RC=erFKqkcAR{!Vj9ni8coIcl9vgry@Cge?yT#4)AQ1Hd6Z4Ekdd~k z(nQrF3#Tq2`|E-ivyQwKFIjHqHxzqEv^_<9qnJqPmJx_d!yz>)nJwzYQnkyIMs=r*ak-10Y^1Y?Mw(nLw zvbuhy+v^D1jWp$W%io^~IW3$f|Xrk9`7@7|W!E%yKV|KA^e9#y|T^XTMo@wbmo z9@Q5=^MA*S|CK*#KEAB2XgJxLIVV#x`p*7cFYcvq=fx^N6jz*eP4Auk{vWSD{X2DP z+0%1+_1mMi^X^gXji}o-srQlFrl;3eZ_Q)L{`u)#mTpVtlnJMIYhRPlJ-Bhs=*7B^BTNX8kC?+WCInHL-Qw#=HMK&dQClDd9Ws#aVvJB+qHqu?;1A zeq1a6aM2`J`^~57I~%fj?u6F1oj1?*?LNkpeW>XFq>hc-EPJ0Pq*ho(r`~uLel>Jb zZe9#OyH~lM+ z{72K{53TSq>Dhe3!p-&AL)rTp2P58oiO819R=WRZN6cE$J#5uaK5$-Rnz8YZ#JR&S zj%997c^N(1?%$3kb%uF6F3*d;b!@B6y^Rmp_}1rcx#}ay?{MeP+Jj!#&Y1Dc*qAW+ z>3QuN6Q&gK`9E6zKg5_X>6!<`j|a+Kc9U(s&21y|7k-`^4a+ z6yKglC5x>)KXVJzB;O7@HLqw&gocg((@4$&heNl-5Ar5L+uBP zauYZG5f#XBn6I{H(pr9ti~BDHzi<{QcH^?$rtx^AZM=xS_|)?ZhXfoHlC(Gyh z!{_rq++mzlTKVqfoGHCr0e(lbuSKoDVki(KD=F9B=<60`8`muJ_5H8#y3Ly!zWwi; z^K#CEb?1KZe$F}<^;Q1Wp802wIlhxl7rUv=J)`%aRzlQ{m)AIpPt@G(Y*=(*@8+K_ zMPDAA;8t_*e;>BNC~fPlHrawm)redsezsT4{XZ7YwcxCaxO$`VLvpU@s*rWtlUG=% z*36N3X~pC@>HCv|=?8)jv>H78>3C$a;v&^+@0JPaIq$T-xM+8ualG#_2Jx$_DiaT^ zzWm#0SySkqelLfE$HO)Rf7m$D;`W}NIbR-qxYKP>C)C@xR47rsj_vDAP6d_fHlIKL zPE_`u-!$i-`l+AS_HS(6`+ef>Rm-H`Bzd{4Kic_Z^TS6XHEUD92%S52eSWy;@8=eC zA9F3adcM#~An}amO@rb(o;|xo{>3K!ytLqCz=AF5DF*2uj<2%3Twj_OV;9+T{@C+n z%i`ZRyG$18J*>;{u>aB96@0TiOZd<78hSm@S^iP6q$)pK;_CPHHZB{Ez5L8P)pkqM z`Ro-&4#6_%T7Db+ob8lCHXJH$51c&bgnWa9XpeN<^B8Uu=_cLi1*-E`f85{{SJUt> zmD}3%vg>vRR>qq}?AMZH?A)#et+iv#_O#pl;$PBH76FBgYvrf^nXn~)L7)Xgh{O5* z^JU`q;#JLd%ba>H{*R%Mb9;X8Nw+guhaKH=ru z#THtAf76QIW$W+7o=KA_aoL!@r#Jf5jeN(isTDgv8>`*lOTMXJ^fB$AKw%j<);K7lJhqnqWe^9`h zZnyoU!z+GIuNcX?L+>Yj|7fUo=4H9kgF5|=`Hs=z>joPi%PGE(mE6?7 zKK;E+@AvL0TltQiyRJUNc=x0~BB%D66pOCqapL}d;-KIvcD3SFf}j5UsNz5PC)X?a zy;r2=grY<3ORV>-+UYsD;9eV}%E{tmCm1gruFKIhfBDp%LoS8;Ht(FWh+B3Yg>R3w&E$6$$-YiW;A**~4e{N&}mnK4V&oK2p5W{bo3khbLaP z)y>P{JhQq=<%Z|BZ+&;>etG5G*e>e**fO}D^|yO@`-fUR3z^K-R(BUnmiT_Lt<=k7 z^W0L$ZcEo6{lD`pKX1y*@|$=}ceY=N%JyeMwVdfQe5P{+am7oj?K#-c@T4Gj+O<6b zn`i0l)OxpCba(#BGpW@U?=4K1Ec?(e8z8#7-~Qc}uQ^@wRdhWL*1p_%^XG4s&dfl| zYpF?-;z}jf@vwigw%>OzwysX>Y5FhA&JW9{>fE^V_}TPd9iPgU*7x?^%@&!g{xWWH zl-$%EdmB;?JgDBX{-oi-(rIPKuBG>LT30-eoPNaITx~-4-wQ{c-F2OK)1>9>q}{j9 zKbqmX?7g_!mbaQ$>RwLpvNu`w^T0Rv)ZdS{ZM=Ez$NPvKa(VOS9`ImjURPLb{J%ZT zEZ@+kzJh+8_AMWr6(TS@>!j2@AkK)eAz|ji?a&m ztu5rsZ~Pio!jyYO(<0QegsJvLP_a(o|7q3nvZ3GnU#4vq+cR~;!(7XMGST1O--+L3 z8|lp*)W@tf-O4duRCG?e_6<7 z@8l&W>WS$OpXF=*tlPHSa`&_l>!PP0v)*q1@buoB{r>XO3(JG^iZ{Smj2#-p(ao3%bd{9vNvB|ZI|X>eqCv*O8f7xDMK=6ZV1>AdwT)ojP@^X@z9&Y3r#{r>G`rq8eZe|N*| z=f|5xS<$l&i~JO^wtoHZ!sVq~8)D}(X|9=dpYglimt~ddUw<6VzVwZw(Kp-JG3z3q zW|H-avq$7wmmDf8Ws;7OFs)C!WobIe@^qLGds*4cXCmicS@wsy#ij22a!4`sq5G>h zMsuI`ShS|cybvxa`hDT%)3>E%GtcyGHu1l4Xu@w}yYd@sWq#qo=X!r-gjPuJ44irM z-?oznIRDyxiTkOx_fs*W`Oc`Sy^9xGStrj6+&%T}&4}CDhqPmZ{pNf%oqK(%mFsmE z#oW&eGf%x-@*$_*_eV*9!ty7<;n9m!V}Hks^7#EwKUQpV;K~c(8T$^M{}gAQWO;hq zs?P_HWzM~GJo8o%+k#bf8-!mx)BMNs=#faQNK3}^=jY2;Z9XNp=i1I^CMWh!IV?H- z`sLo39mg{JV)GhiR@_cfwANXU3}_#GW~SxW%zEVKbXj@!CliBA29J+}*&bvmmtVcbC!q?1U)WLQnJa~7$sIe{Z8dxU#8S;v)(l+e^+?O{&4r*w{ORP`TE|g^}5TY>sd{fPGRrhUk-vJzvAY=b`&!`XA zJN%lqN~XpJCcVfAPJQuVlYQ}xr{y0uKJ=6FRd@|Bn~E%m$xl-CMU~ z_6ViAYi7gi`oq^B{%~Q-Nbx@Z;m4MQT?vMnj@1Qi zdGAE$*|8m5enEd`FV7!CJ|2%5`t3apw+nx`Cw}?#kIUe4qhFh(JWE$qjnbM48h<_a z7bs`GHFWfKYU4bx%K4!ePj<@cPx{&+e>4h(x|rB)@{HDXM|6GP?p$Gq=sA^r(~q^kkmJHq zjr|i#Vy&#q(Jy&#$+sR_}WPLbEp1@_qwasOJ__~Z9mbcaEo>}+u!rSc@EF1y>n<8v> z$*D)p-FsqpL|FXqKk*aqW^bOMCg%D7n)D=IDgQMU>h4MbIWJjCd0+ZE&1_WB;}rfF z^pJ6y)wJt%OC_&QZ#lR}f4A`k4&8 zinsh`6l?##>ofa7zAu(G_58+PXa6sp`pn@1JGbK|r_23|6_pHF`CYDgwOk7p?@4g{ zxk#$a|EnY`^V$`zFIK$xo%q>|wYcu`=2MQ&c*GbmuZd9ESu~S8Ueynjx{9Buy z*KTm`n6cMdX5U0b;k?|3?gkaS!Irmva=IK7b?M&y?k#g(Q(bVXz(b?BgNf0MA+ugC z|9V|-^$ni`Q&+5&wEp(s&B-|n|D^~|{Vwy$bHkJkLCnT!LSj2Od%`z5o_@68{l{4) zhbF6*be~URQ$2lDnypfI2B+=uS!X2tay*t8E$S8KHIlrjy}DqUw9dne^Ef}=T=v|N zVVQiG7(*kcW4Wn>=y~(R^Os+R#)PdqG+(u&T+LPXZIQ6sp^aO7u7z$e(U4r}XU5{h zAy_Up`>D(l^VFCryN|36aGvGk$h*tcAmw9!4lOSv@P|BTw)1>q^Ot6Gx}F{?~>{yn|%ui&Mos*ek|+)}Zhawg8})xDCFtWBri8E$?j zyteD5_5G6*Lp*aPzmGT?JKe+Xv$Dq2DGyGs@_x3i6 z{b34>)q8A=mua^!H;Q!~dMB8B=J^DT37TqE@gK4`SuR>~)izUpZ32V(Zn+A(*GDxr z&0DChS2?5W@^`*P?^dzbgn8(G3M%L@tm4{fydZdvalWqO-@acp;SUR52dFTB>qi>FKEQWHmE*3bSgInQS~XI9Sb zcv~p7VBP!Wr{%t1Uby|D)uW^9jc*nENV2N=O;$@fZ9z9Cv9n}J=j`YR-z~#X03I8(rT`+ zORQ2w-esCRU%dLt<SCh%)p@e=Kaa|Ijs)g3yuZQ4SA`+zI{rW<|V zKlYq@PA;)T%wnUdfhfa*jkk1He_Y{ncg>M5qm$RUo23e(zw}v6muL5Dkd)=B&6&9` zxYzF2yZAkUX0yM6cF6p+5WD*({=LfXm%DF!U6_6AF*E1KuEN9`nfHmM8)nztKQmFa zO;&2BzSA_53%47OT$amAlC51=Tbj3ESR36YM;`V#NRl#R>Ew$p>gqnk1%0yaJPTAqxoWI$$IA~>j z?^6~o_dgpMFUN!&xHMy~+SR`jj%(hTDt(${ar2n1&y8P7_K$Vtmg&S8E3R-C$G*?s3g@cHn^- zH+^TSyG{_#zx?+3^zKHJ)X=o+UuCZJNn~6#X?b0w_y4Wcscq+kPuw;-cK3hG(nZr1 z<#J#6SlEa&T)*dgiIwTKm$+q${k}|5?IWdW7sa1RcL++@7ChbCq7ZqF@v1D>YmVvd zo*`L3pHB^z(A>tte?p^w(cW@TeTkR%8kU?svC;gm+Zv1BN$QeC3S0Irv~~Q?*3D~? zrf{Ha>vz!zrKrx{2XR_&kC>@M)z15}WQNY4>aEtsJH?;=u2{F;yj6g!WXId}zC~yD zEC_tQFlWu`yZevXOgw(H=ri}_ShdQCcfM1*I$uc5*ziwEaJm88+fR39Y&r47MWI^# zu-%G_Pjdeh%{`ZQ;Haep-wuo8=KX#L)?d>*aN|pTe;bScACCVX?`y@*cJ^}2)G^)v z=B?faJ-!2~H=TSYOim8kb-Ie#U|p5XiGb$Kd>=LE$Dh!e(er*X&rUnZ{%CLY7qcfz zT=d@gV9vM9>b;4K?C0GVsk;cja_z_yJ*)ciZ)0uE>XJMo_dm{t*H|Cl>*x7q!h2hl zh4WqLy$w#2gd7dtsqOuGkxSEg*A(Rw%?+H-om%efiVj*R654ckZ|*vyjU-zfAgYtNUOVyWlyW%%g$66B#A!%HxbwT)pAa4AD3m6{Wrd=wokn$bITDEt^D|8uS1t#H8o2+@9;Voa%PX9 z)%DqrqL<$7(L8nO67NF&GaKDLbonn!UvlPsEAxt|ebK#7b}4t5g!?`^`LrYad&#@^ zyg{}rC#U#koU?r6y<@-j`s!Mf-DZx3nl@`QMLKq6^1WtMUL3b*rb>BW)f!vBgljTt z8O=eLeu}nCR8B6F%T8OZ=(hNfRq>}+O?yP6m727p?DAeTaqX`@?D)AWb;_YDB|7Jx zTrm2?Z?o9L*M+fk@?oESd`+ujLUm3rkyU$Q{-XA_sra?u+P#)-`g)Hu-!Nr-y*Bm! zg~Oflj~TXEc*sA!xa{1d)|oaJ?zO(xxzwg|-C@er1{sc{i3eKWd`q46bz5=9B9Grj z&KtOHh0a*CiuFTc4x=hu6d^BQcoU=2z~bNTl(;M zr|6vyH>+PMO>t@7-tl+p``^EZ^%jd7^GjPjtaN)8b8^qd9io zleY1bJk)aL{=fbw1znT>RTT(&lped{$DY5!UN&}@`W~q>ZJ8ba+E%+2%rod^HPre1 zoY&~qU%mO)7HB;0ne_OhzuTmi84G`Ctxxj**t%_+Z9v7#C4S#pFeq1 zj7n|7L4NJvIZN4mzSjR()i!Usr|cW=wk@R+3(hQ=JaM6CypVst*MS2MUrBzL+4so! zP9>+Xo$c)O7Y=P_*XsIgH&3X}W*M_)3yV#wd%EoVyMu??q8@lKESoNJFa4C!Kixe|tVaYN zRcsKKta#s^di;X*-h75&XT9)^SsU%%aKCRoydiDH`zh-Re)UK@uVFRTZTd1l+(3Ab zU72fW?8de~chWxI`v2NhX~75kOE>TOMjv-AGO?CD`qB5mYsJ5wZ9nZkh8aydVE=_( z)a&o!e@7VZ70LU2@b#Ubb@A(j>q{D)k{l09nO8aS=C3<`Z_4t$ip!=QWRsJh&*<}K zq17Yxv;3m(LzlG(%ammlFVd->%a^r!ZEM5XjYsr~CDXXMedFuy=G3z3&n~)bqq^@( z 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 I>hHz{00=Lf(*OVf literal 0 HcmV?d00001 diff --git a/crates/server/tests/import_tests.rs b/crates/server/tests/import_tests.rs new file mode 100644 index 0000000..d7c0e33 --- /dev/null +++ b/crates/server/tests/import_tests.rs @@ -0,0 +1,74 @@ +use malfestio_server::import::{DocumentParser, docx::DocxParser, pdf::PdfParser}; +use std::path::PathBuf; + +fn get_test_data_path(filename: &str) -> PathBuf { + let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + path.push("tests/data"); + path.push(filename); + path +} + +#[test] +fn test_pdf_extraction() { + let path = get_test_data_path("1904.09828v2.pdf"); + assert!(path.exists(), "Test PDF not found at {:?}", path); + + let parser = PdfParser; + let result = parser.parse(&path); + assert!(result.is_ok(), "PDF parsing should succeed"); + + let content = result.unwrap(); + assert!(!content.is_empty(), "Extracted content should not be empty"); + assert!( + content.contains("Magic: The Gathering"), + "Content should contain 'Magic: The Gathering'" + ); + assert!( + content.contains("Turing Complete"), + "Content should contain 'Turing Complete'" + ); + + assert!( + content.contains("Alex Churchill"), + "Content should contain author 'Alex Churchill'" + ); + + let content_lower = content.to_lowercase(); + assert!(content_lower.contains("abstract"), "Content should contain 'Abstract'"); + + assert!( + content_lower.contains("introduction"), + "Content should contain 'Introduction'" + ); + assert!( + content_lower.contains("references"), + "Content should contain 'References'" + ); + + assert!( + content.len() > 5000, + "Content should be substantial (likely > 5000 chars)" + ); +} + +#[test] +fn test_docx_stub_extraction() { + let path = get_test_data_path("dummy.docx"); + let parser = DocxParser; + let result = parser.parse(&path); + + assert!(result.is_ok(), "DOCX stub should return Ok"); + let content = result.unwrap(); + assert!( + content.contains("not yet implemented"), + "Content should indicate stub implementation" + ); +} + +#[test] +fn test_pdf_missing_file() { + let path = get_test_data_path("non_existent.pdf"); + let parser = PdfParser; + let result = parser.parse(&path); + assert!(result.is_err(), "Parsing missing file should return error"); +} diff --git a/docs/todo.md b/docs/todo.md index d033e5b..342a16d 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -184,6 +184,46 @@ type ReasonRepost = { **Reference:** [Ozone Moderation Service](https://github.com/bluesky-social/ozone) +### Milestone P - Readability Updates + +#### Deliverables + +**Multi-page Support:** + +- [ ] `single_page_link` directive - find "view full article" link +- [ ] `next_page_link` directive - paginate through article pages +- [ ] Concatenate content from multiple pages +- [ ] Avoid circular pagination + +**Advanced Directives:** + +- [ ] `http_header(name)` directive - custom headers for fetching +- [ ] `replace_string(find): replace` directive - text replacement +- [ ] `find_string` directive - text pattern matching + +**Quality:** + +- [ ] Better table handling in markdown +- [ ] Image caption extraction +- [ ] JSON-LD support + +**Performance:** + +- [ ] LRU cache for parsed configs +- [ ] Parallel candidate scoring +- [ ] Lazy XPath evaluation + +**Markdown Conversion:** + +- [ ] Custom markdown converter (more control than html2md) +- [ ] Code block language detection + +#### Acceptance + +- [ ] Can correctly extract multi-page articles (e.g., long news reports). +- [ ] Advanced string manipulation allows for cleaner output on tricky sites. +- [ ] Performance remains stable under high load. + ## Open Question/Parked Decisions - Full offline authoring + later publish -- 2.51.2