My personal site cherry.computer
htmx tailwind axum askama

feat: get latest game played from Backloggd

cherry.computer e9a32743 93967fc8

verified
+1283 -9
+1 -1
justfile
··· 6 npm start 7 8 [working-directory: 'server'] 9 - serve-rs $RUST_LOG=env('RUST_LOG', 'debug'): 10 watchexec --restart --ignore "target/**" cargo run
··· 6 npm start 7 8 [working-directory: 'server'] 9 + serve-rs $RUST_LOG=env('RUST_LOG', 'debug,selectors=warn,html5ever=warn'): 10 watchexec --restart --ignore "target/**" cargo run
+1205 -4
server/Cargo.lock
··· 180 ] 181 182 [[package]] 183 name = "basic-toml" 184 version = "0.1.10" 185 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 216 ] 217 218 [[package]] 219 name = "bytes" 220 version = "1.10.1" 221 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 261 checksum = "2957e823c15bde7ecf1e8b64e537aa03a6be5fda0e2334e99887669e75b12e01" 262 263 [[package]] 264 name = "crc32fast" 265 version = "1.5.0" 266 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 270 ] 271 272 [[package]] 273 name = "flate2" 274 version = "1.1.2" 275 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 286 checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 287 288 [[package]] 289 name = "form_urlencoded" 290 version = "1.2.2" 291 source = "registry+https://github.com/rust-lang/crates.io-index" 292 checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 293 dependencies = [ 294 "percent-encoding", 295 ] 296 297 [[package]] ··· 334 ] 335 336 [[package]] 337 name = "getrandom" 338 version = "0.3.3" 339 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 352 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 353 354 [[package]] 355 name = "http" 356 version = "1.3.1" 357 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 413 "bytes", 414 "futures-channel", 415 "futures-core", 416 "http", 417 "http-body", 418 "httparse", ··· 422 "pin-utils", 423 "smallvec", 424 "tokio", 425 ] 426 427 [[package]] ··· 430 source = "registry+https://github.com/rust-lang/crates.io-index" 431 checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" 432 dependencies = [ 433 "bytes", 434 "futures-core", 435 "http", 436 "http-body", 437 "hyper", 438 "pin-project-lite", 439 "tokio", 440 "tower-service", 441 ] 442 443 [[package]] ··· 452 ] 453 454 [[package]] 455 name = "itoa" 456 version = "1.0.15" 457 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 463 source = "registry+https://github.com/rust-lang/crates.io-index" 464 checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 465 dependencies = [ 466 - "getrandom", 467 "libc", 468 ] 469 470 [[package]] 471 name = "lazy_static" 472 version = "1.5.0" 473 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 480 checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" 481 482 [[package]] 483 name = "lock_api" 484 version = "0.4.13" 485 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 496 checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 497 498 [[package]] 499 name = "matchit" 500 version = "0.8.4" 501 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 540 dependencies = [ 541 "libc", 542 "wasi 0.11.1+wasi-snapshot-preview1", 543 - "windows-sys", 544 ] 545 546 [[package]] ··· 550 "anyhow", 551 "askama", 552 "axum", 553 "tokio", 554 "tower", 555 "tower-http", ··· 558 ] 559 560 [[package]] 561 name = "nu-ansi-term" 562 version = "0.46.0" 563 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 581 version = "1.21.3" 582 source = "registry+https://github.com/rust-lang/crates.io-index" 583 checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 584 585 [[package]] 586 name = "overload" ··· 618 checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 619 620 [[package]] 621 name = "pin-project-lite" 622 version = "0.2.16" 623 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 636 checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 637 638 [[package]] 639 name = "proc-macro2" 640 version = "1.0.101" 641 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 660 checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 661 662 [[package]] 663 name = "redox_syscall" 664 version = "0.5.17" 665 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 669 ] 670 671 [[package]] 672 name = "rustc-demangle" 673 version = "0.1.26" 674 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 681 checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 682 683 [[package]] 684 name = "rustversion" 685 version = "1.0.22" 686 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 693 checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 694 695 [[package]] 696 name = "scopeguard" 697 version = "1.2.0" 698 source = "registry+https://github.com/rust-lang/crates.io-index" 699 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 700 701 [[package]] 702 name = "serde" 703 version = "1.0.219" 704 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 753 ] 754 755 [[package]] 756 name = "sharded-slab" 757 version = "0.1.7" 758 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 777 ] 778 779 [[package]] 780 name = "slab" 781 version = "0.4.11" 782 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 795 checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" 796 dependencies = [ 797 "libc", 798 - "windows-sys", 799 ] 800 801 [[package]] 802 name = "syn" ··· 814 version = "1.0.2" 815 source = "registry+https://github.com/rust-lang/crates.io-index" 816 checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 817 818 [[package]] 819 name = "thread_local" ··· 825 ] 826 827 [[package]] 828 name = "tokio" 829 version = "1.47.1" 830 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 841 "slab", 842 "socket2", 843 "tokio-macros", 844 - "windows-sys", 845 ] 846 847 [[package]] ··· 856 ] 857 858 [[package]] 859 name = "tokio-util" 860 version = "0.7.16" 861 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 900 "http-body-util", 901 "http-range-header", 902 "httpdate", 903 "mime", 904 "mime_guess", 905 "percent-encoding", 906 "pin-project-lite", 907 "tokio", 908 "tokio-util", 909 "tower-layer", 910 "tower-service", 911 "tracing", ··· 982 ] 983 984 [[package]] 985 name = "unicase" 986 version = "2.8.1" 987 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 994 checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 995 996 [[package]] 997 name = "valuable" 998 version = "0.1.1" 999 source = "registry+https://github.com/rust-lang/crates.io-index" 1000 checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 1001 1002 [[package]] 1003 name = "wasi" 1004 version = "0.11.1+wasi-snapshot-preview1" 1005 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1015 ] 1016 1017 [[package]] 1018 name = "winapi" 1019 version = "0.3.9" 1020 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1037 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1038 1039 [[package]] 1040 name = "windows-sys" 1041 version = "0.59.0" 1042 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1125 checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 1126 dependencies = [ 1127 "bitflags", 1128 ] 1129 1130 [[package]]
··· 180 ] 181 182 [[package]] 183 + name = "base64" 184 + version = "0.22.1" 185 + source = "registry+https://github.com/rust-lang/crates.io-index" 186 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 187 + 188 + [[package]] 189 name = "basic-toml" 190 version = "0.1.10" 191 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 222 ] 223 224 [[package]] 225 + name = "bumpalo" 226 + version = "3.19.0" 227 + source = "registry+https://github.com/rust-lang/crates.io-index" 228 + checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 229 + 230 + [[package]] 231 + name = "byteorder" 232 + version = "1.5.0" 233 + source = "registry+https://github.com/rust-lang/crates.io-index" 234 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 235 + 236 + [[package]] 237 name = "bytes" 238 version = "1.10.1" 239 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 279 checksum = "2957e823c15bde7ecf1e8b64e537aa03a6be5fda0e2334e99887669e75b12e01" 280 281 [[package]] 282 + name = "core-foundation" 283 + version = "0.9.4" 284 + source = "registry+https://github.com/rust-lang/crates.io-index" 285 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 286 + dependencies = [ 287 + "core-foundation-sys", 288 + "libc", 289 + ] 290 + 291 + [[package]] 292 + name = "core-foundation-sys" 293 + version = "0.8.7" 294 + source = "registry+https://github.com/rust-lang/crates.io-index" 295 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 296 + 297 + [[package]] 298 name = "crc32fast" 299 version = "1.5.0" 300 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 304 ] 305 306 [[package]] 307 + name = "cssparser" 308 + version = "0.35.0" 309 + source = "registry+https://github.com/rust-lang/crates.io-index" 310 + checksum = "4e901edd733a1472f944a45116df3f846f54d37e67e68640ac8bb69689aca2aa" 311 + dependencies = [ 312 + "cssparser-macros", 313 + "dtoa-short", 314 + "itoa", 315 + "phf", 316 + "smallvec", 317 + ] 318 + 319 + [[package]] 320 + name = "cssparser-macros" 321 + version = "0.6.1" 322 + source = "registry+https://github.com/rust-lang/crates.io-index" 323 + checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 324 + dependencies = [ 325 + "quote", 326 + "syn", 327 + ] 328 + 329 + [[package]] 330 + name = "derive_more" 331 + version = "2.0.1" 332 + source = "registry+https://github.com/rust-lang/crates.io-index" 333 + checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" 334 + dependencies = [ 335 + "derive_more-impl", 336 + ] 337 + 338 + [[package]] 339 + name = "derive_more-impl" 340 + version = "2.0.1" 341 + source = "registry+https://github.com/rust-lang/crates.io-index" 342 + checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" 343 + dependencies = [ 344 + "proc-macro2", 345 + "quote", 346 + "syn", 347 + ] 348 + 349 + [[package]] 350 + name = "displaydoc" 351 + version = "0.2.5" 352 + source = "registry+https://github.com/rust-lang/crates.io-index" 353 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 354 + dependencies = [ 355 + "proc-macro2", 356 + "quote", 357 + "syn", 358 + ] 359 + 360 + [[package]] 361 + name = "dtoa" 362 + version = "1.0.10" 363 + source = "registry+https://github.com/rust-lang/crates.io-index" 364 + checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" 365 + 366 + [[package]] 367 + name = "dtoa-short" 368 + version = "0.3.5" 369 + source = "registry+https://github.com/rust-lang/crates.io-index" 370 + checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" 371 + dependencies = [ 372 + "dtoa", 373 + ] 374 + 375 + [[package]] 376 + name = "ego-tree" 377 + version = "0.10.0" 378 + source = "registry+https://github.com/rust-lang/crates.io-index" 379 + checksum = "b2972feb8dffe7bc8c5463b1dacda1b0dfbed3710e50f977d965429692d74cd8" 380 + 381 + [[package]] 382 + name = "encoding_rs" 383 + version = "0.8.35" 384 + source = "registry+https://github.com/rust-lang/crates.io-index" 385 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 386 + dependencies = [ 387 + "cfg-if", 388 + ] 389 + 390 + [[package]] 391 + name = "equivalent" 392 + version = "1.0.2" 393 + source = "registry+https://github.com/rust-lang/crates.io-index" 394 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 395 + 396 + [[package]] 397 + name = "errno" 398 + version = "0.3.13" 399 + source = "registry+https://github.com/rust-lang/crates.io-index" 400 + checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" 401 + dependencies = [ 402 + "libc", 403 + "windows-sys 0.59.0", 404 + ] 405 + 406 + [[package]] 407 + name = "fastrand" 408 + version = "2.3.0" 409 + source = "registry+https://github.com/rust-lang/crates.io-index" 410 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 411 + 412 + [[package]] 413 name = "flate2" 414 version = "1.1.2" 415 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 426 checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 427 428 [[package]] 429 + name = "foreign-types" 430 + version = "0.3.2" 431 + source = "registry+https://github.com/rust-lang/crates.io-index" 432 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 433 + dependencies = [ 434 + "foreign-types-shared", 435 + ] 436 + 437 + [[package]] 438 + name = "foreign-types-shared" 439 + version = "0.1.1" 440 + source = "registry+https://github.com/rust-lang/crates.io-index" 441 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 442 + 443 + [[package]] 444 name = "form_urlencoded" 445 version = "1.2.2" 446 source = "registry+https://github.com/rust-lang/crates.io-index" 447 checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 448 dependencies = [ 449 "percent-encoding", 450 + ] 451 + 452 + [[package]] 453 + name = "futf" 454 + version = "0.1.5" 455 + source = "registry+https://github.com/rust-lang/crates.io-index" 456 + checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 457 + dependencies = [ 458 + "mac", 459 + "new_debug_unreachable", 460 ] 461 462 [[package]] ··· 499 ] 500 501 [[package]] 502 + name = "fxhash" 503 + version = "0.2.1" 504 + source = "registry+https://github.com/rust-lang/crates.io-index" 505 + checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 506 + dependencies = [ 507 + "byteorder", 508 + ] 509 + 510 + [[package]] 511 + name = "getopts" 512 + version = "0.2.23" 513 + source = "registry+https://github.com/rust-lang/crates.io-index" 514 + checksum = "cba6ae63eb948698e300f645f87c70f76630d505f23b8907cf1e193ee85048c1" 515 + dependencies = [ 516 + "unicode-width", 517 + ] 518 + 519 + [[package]] 520 + name = "getrandom" 521 + version = "0.2.16" 522 + source = "registry+https://github.com/rust-lang/crates.io-index" 523 + checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 524 + dependencies = [ 525 + "cfg-if", 526 + "libc", 527 + "wasi 0.11.1+wasi-snapshot-preview1", 528 + ] 529 + 530 + [[package]] 531 name = "getrandom" 532 version = "0.3.3" 533 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 546 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 547 548 [[package]] 549 + name = "h2" 550 + version = "0.4.12" 551 + source = "registry+https://github.com/rust-lang/crates.io-index" 552 + checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" 553 + dependencies = [ 554 + "atomic-waker", 555 + "bytes", 556 + "fnv", 557 + "futures-core", 558 + "futures-sink", 559 + "http", 560 + "indexmap", 561 + "slab", 562 + "tokio", 563 + "tokio-util", 564 + "tracing", 565 + ] 566 + 567 + [[package]] 568 + name = "hashbrown" 569 + version = "0.15.5" 570 + source = "registry+https://github.com/rust-lang/crates.io-index" 571 + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 572 + 573 + [[package]] 574 + name = "html5ever" 575 + version = "0.35.0" 576 + source = "registry+https://github.com/rust-lang/crates.io-index" 577 + checksum = "55d958c2f74b664487a2035fe1dadb032c48718a03b63f3ab0b8537db8549ed4" 578 + dependencies = [ 579 + "log", 580 + "markup5ever", 581 + "match_token", 582 + ] 583 + 584 + [[package]] 585 name = "http" 586 version = "1.3.1" 587 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 643 "bytes", 644 "futures-channel", 645 "futures-core", 646 + "h2", 647 "http", 648 "http-body", 649 "httparse", ··· 653 "pin-utils", 654 "smallvec", 655 "tokio", 656 + "want", 657 + ] 658 + 659 + [[package]] 660 + name = "hyper-rustls" 661 + version = "0.27.7" 662 + source = "registry+https://github.com/rust-lang/crates.io-index" 663 + checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 664 + dependencies = [ 665 + "http", 666 + "hyper", 667 + "hyper-util", 668 + "rustls", 669 + "rustls-pki-types", 670 + "tokio", 671 + "tokio-rustls", 672 + "tower-service", 673 + ] 674 + 675 + [[package]] 676 + name = "hyper-tls" 677 + version = "0.6.0" 678 + source = "registry+https://github.com/rust-lang/crates.io-index" 679 + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 680 + dependencies = [ 681 + "bytes", 682 + "http-body-util", 683 + "hyper", 684 + "hyper-util", 685 + "native-tls", 686 + "tokio", 687 + "tokio-native-tls", 688 + "tower-service", 689 ] 690 691 [[package]] ··· 694 source = "registry+https://github.com/rust-lang/crates.io-index" 695 checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" 696 dependencies = [ 697 + "base64", 698 "bytes", 699 + "futures-channel", 700 "futures-core", 701 + "futures-util", 702 "http", 703 "http-body", 704 "hyper", 705 + "ipnet", 706 + "libc", 707 + "percent-encoding", 708 "pin-project-lite", 709 + "socket2", 710 + "system-configuration", 711 "tokio", 712 "tower-service", 713 + "tracing", 714 + "windows-registry", 715 + ] 716 + 717 + [[package]] 718 + name = "icu_collections" 719 + version = "2.0.0" 720 + source = "registry+https://github.com/rust-lang/crates.io-index" 721 + checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 722 + dependencies = [ 723 + "displaydoc", 724 + "potential_utf", 725 + "yoke", 726 + "zerofrom", 727 + "zerovec", 728 + ] 729 + 730 + [[package]] 731 + name = "icu_locale_core" 732 + version = "2.0.0" 733 + source = "registry+https://github.com/rust-lang/crates.io-index" 734 + checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 735 + dependencies = [ 736 + "displaydoc", 737 + "litemap", 738 + "tinystr", 739 + "writeable", 740 + "zerovec", 741 + ] 742 + 743 + [[package]] 744 + name = "icu_normalizer" 745 + version = "2.0.0" 746 + source = "registry+https://github.com/rust-lang/crates.io-index" 747 + checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 748 + dependencies = [ 749 + "displaydoc", 750 + "icu_collections", 751 + "icu_normalizer_data", 752 + "icu_properties", 753 + "icu_provider", 754 + "smallvec", 755 + "zerovec", 756 + ] 757 + 758 + [[package]] 759 + name = "icu_normalizer_data" 760 + version = "2.0.0" 761 + source = "registry+https://github.com/rust-lang/crates.io-index" 762 + checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 763 + 764 + [[package]] 765 + name = "icu_properties" 766 + version = "2.0.1" 767 + source = "registry+https://github.com/rust-lang/crates.io-index" 768 + checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 769 + dependencies = [ 770 + "displaydoc", 771 + "icu_collections", 772 + "icu_locale_core", 773 + "icu_properties_data", 774 + "icu_provider", 775 + "potential_utf", 776 + "zerotrie", 777 + "zerovec", 778 + ] 779 + 780 + [[package]] 781 + name = "icu_properties_data" 782 + version = "2.0.1" 783 + source = "registry+https://github.com/rust-lang/crates.io-index" 784 + checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 785 + 786 + [[package]] 787 + name = "icu_provider" 788 + version = "2.0.0" 789 + source = "registry+https://github.com/rust-lang/crates.io-index" 790 + checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 791 + dependencies = [ 792 + "displaydoc", 793 + "icu_locale_core", 794 + "stable_deref_trait", 795 + "tinystr", 796 + "writeable", 797 + "yoke", 798 + "zerofrom", 799 + "zerotrie", 800 + "zerovec", 801 + ] 802 + 803 + [[package]] 804 + name = "idna" 805 + version = "1.1.0" 806 + source = "registry+https://github.com/rust-lang/crates.io-index" 807 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 808 + dependencies = [ 809 + "idna_adapter", 810 + "smallvec", 811 + "utf8_iter", 812 + ] 813 + 814 + [[package]] 815 + name = "idna_adapter" 816 + version = "1.2.1" 817 + source = "registry+https://github.com/rust-lang/crates.io-index" 818 + checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 819 + dependencies = [ 820 + "icu_normalizer", 821 + "icu_properties", 822 + ] 823 + 824 + [[package]] 825 + name = "indexmap" 826 + version = "2.11.0" 827 + source = "registry+https://github.com/rust-lang/crates.io-index" 828 + checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" 829 + dependencies = [ 830 + "equivalent", 831 + "hashbrown", 832 ] 833 834 [[package]] ··· 843 ] 844 845 [[package]] 846 + name = "ipnet" 847 + version = "2.11.0" 848 + source = "registry+https://github.com/rust-lang/crates.io-index" 849 + checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 850 + 851 + [[package]] 852 + name = "iri-string" 853 + version = "0.7.8" 854 + source = "registry+https://github.com/rust-lang/crates.io-index" 855 + checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" 856 + dependencies = [ 857 + "memchr", 858 + "serde", 859 + ] 860 + 861 + [[package]] 862 name = "itoa" 863 version = "1.0.15" 864 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 870 source = "registry+https://github.com/rust-lang/crates.io-index" 871 checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 872 dependencies = [ 873 + "getrandom 0.3.3", 874 "libc", 875 ] 876 877 [[package]] 878 + name = "js-sys" 879 + version = "0.3.77" 880 + source = "registry+https://github.com/rust-lang/crates.io-index" 881 + checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 882 + dependencies = [ 883 + "once_cell", 884 + "wasm-bindgen", 885 + ] 886 + 887 + [[package]] 888 name = "lazy_static" 889 version = "1.5.0" 890 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 897 checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" 898 899 [[package]] 900 + name = "linux-raw-sys" 901 + version = "0.9.4" 902 + source = "registry+https://github.com/rust-lang/crates.io-index" 903 + checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" 904 + 905 + [[package]] 906 + name = "litemap" 907 + version = "0.8.0" 908 + source = "registry+https://github.com/rust-lang/crates.io-index" 909 + checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 910 + 911 + [[package]] 912 name = "lock_api" 913 version = "0.4.13" 914 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 925 checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 926 927 [[package]] 928 + name = "mac" 929 + version = "0.1.1" 930 + source = "registry+https://github.com/rust-lang/crates.io-index" 931 + checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 932 + 933 + [[package]] 934 + name = "markup5ever" 935 + version = "0.35.0" 936 + source = "registry+https://github.com/rust-lang/crates.io-index" 937 + checksum = "311fe69c934650f8f19652b3946075f0fc41ad8757dbb68f1ca14e7900ecc1c3" 938 + dependencies = [ 939 + "log", 940 + "tendril", 941 + "web_atoms", 942 + ] 943 + 944 + [[package]] 945 + name = "match_token" 946 + version = "0.35.0" 947 + source = "registry+https://github.com/rust-lang/crates.io-index" 948 + checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf" 949 + dependencies = [ 950 + "proc-macro2", 951 + "quote", 952 + "syn", 953 + ] 954 + 955 + [[package]] 956 name = "matchit" 957 version = "0.8.4" 958 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 997 dependencies = [ 998 "libc", 999 "wasi 0.11.1+wasi-snapshot-preview1", 1000 + "windows-sys 0.59.0", 1001 ] 1002 1003 [[package]] ··· 1007 "anyhow", 1008 "askama", 1009 "axum", 1010 + "reqwest", 1011 + "scraper", 1012 "tokio", 1013 "tower", 1014 "tower-http", ··· 1017 ] 1018 1019 [[package]] 1020 + name = "native-tls" 1021 + version = "0.2.14" 1022 + source = "registry+https://github.com/rust-lang/crates.io-index" 1023 + checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" 1024 + dependencies = [ 1025 + "libc", 1026 + "log", 1027 + "openssl", 1028 + "openssl-probe", 1029 + "openssl-sys", 1030 + "schannel", 1031 + "security-framework", 1032 + "security-framework-sys", 1033 + "tempfile", 1034 + ] 1035 + 1036 + [[package]] 1037 + name = "new_debug_unreachable" 1038 + version = "1.0.6" 1039 + source = "registry+https://github.com/rust-lang/crates.io-index" 1040 + checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 1041 + 1042 + [[package]] 1043 name = "nu-ansi-term" 1044 version = "0.46.0" 1045 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1063 version = "1.21.3" 1064 source = "registry+https://github.com/rust-lang/crates.io-index" 1065 checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 1066 + 1067 + [[package]] 1068 + name = "openssl" 1069 + version = "0.10.73" 1070 + source = "registry+https://github.com/rust-lang/crates.io-index" 1071 + checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" 1072 + dependencies = [ 1073 + "bitflags", 1074 + "cfg-if", 1075 + "foreign-types", 1076 + "libc", 1077 + "once_cell", 1078 + "openssl-macros", 1079 + "openssl-sys", 1080 + ] 1081 + 1082 + [[package]] 1083 + name = "openssl-macros" 1084 + version = "0.1.1" 1085 + source = "registry+https://github.com/rust-lang/crates.io-index" 1086 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 1087 + dependencies = [ 1088 + "proc-macro2", 1089 + "quote", 1090 + "syn", 1091 + ] 1092 + 1093 + [[package]] 1094 + name = "openssl-probe" 1095 + version = "0.1.6" 1096 + source = "registry+https://github.com/rust-lang/crates.io-index" 1097 + checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 1098 + 1099 + [[package]] 1100 + name = "openssl-sys" 1101 + version = "0.9.109" 1102 + source = "registry+https://github.com/rust-lang/crates.io-index" 1103 + checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" 1104 + dependencies = [ 1105 + "cc", 1106 + "libc", 1107 + "pkg-config", 1108 + "vcpkg", 1109 + ] 1110 1111 [[package]] 1112 name = "overload" ··· 1144 checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 1145 1146 [[package]] 1147 + name = "phf" 1148 + version = "0.11.3" 1149 + source = "registry+https://github.com/rust-lang/crates.io-index" 1150 + checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" 1151 + dependencies = [ 1152 + "phf_macros", 1153 + "phf_shared", 1154 + ] 1155 + 1156 + [[package]] 1157 + name = "phf_codegen" 1158 + version = "0.11.3" 1159 + source = "registry+https://github.com/rust-lang/crates.io-index" 1160 + checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" 1161 + dependencies = [ 1162 + "phf_generator", 1163 + "phf_shared", 1164 + ] 1165 + 1166 + [[package]] 1167 + name = "phf_generator" 1168 + version = "0.11.3" 1169 + source = "registry+https://github.com/rust-lang/crates.io-index" 1170 + checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" 1171 + dependencies = [ 1172 + "phf_shared", 1173 + "rand", 1174 + ] 1175 + 1176 + [[package]] 1177 + name = "phf_macros" 1178 + version = "0.11.3" 1179 + source = "registry+https://github.com/rust-lang/crates.io-index" 1180 + checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" 1181 + dependencies = [ 1182 + "phf_generator", 1183 + "phf_shared", 1184 + "proc-macro2", 1185 + "quote", 1186 + "syn", 1187 + ] 1188 + 1189 + [[package]] 1190 + name = "phf_shared" 1191 + version = "0.11.3" 1192 + source = "registry+https://github.com/rust-lang/crates.io-index" 1193 + checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 1194 + dependencies = [ 1195 + "siphasher", 1196 + ] 1197 + 1198 + [[package]] 1199 name = "pin-project-lite" 1200 version = "0.2.16" 1201 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1214 checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 1215 1216 [[package]] 1217 + name = "potential_utf" 1218 + version = "0.1.2" 1219 + source = "registry+https://github.com/rust-lang/crates.io-index" 1220 + checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" 1221 + dependencies = [ 1222 + "zerovec", 1223 + ] 1224 + 1225 + [[package]] 1226 + name = "precomputed-hash" 1227 + version = "0.1.1" 1228 + source = "registry+https://github.com/rust-lang/crates.io-index" 1229 + checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 1230 + 1231 + [[package]] 1232 name = "proc-macro2" 1233 version = "1.0.101" 1234 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1253 checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 1254 1255 [[package]] 1256 + name = "rand" 1257 + version = "0.8.5" 1258 + source = "registry+https://github.com/rust-lang/crates.io-index" 1259 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1260 + dependencies = [ 1261 + "rand_core", 1262 + ] 1263 + 1264 + [[package]] 1265 + name = "rand_core" 1266 + version = "0.6.4" 1267 + source = "registry+https://github.com/rust-lang/crates.io-index" 1268 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1269 + 1270 + [[package]] 1271 name = "redox_syscall" 1272 version = "0.5.17" 1273 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1277 ] 1278 1279 [[package]] 1280 + name = "reqwest" 1281 + version = "0.12.23" 1282 + source = "registry+https://github.com/rust-lang/crates.io-index" 1283 + checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" 1284 + dependencies = [ 1285 + "base64", 1286 + "bytes", 1287 + "encoding_rs", 1288 + "futures-core", 1289 + "h2", 1290 + "http", 1291 + "http-body", 1292 + "http-body-util", 1293 + "hyper", 1294 + "hyper-rustls", 1295 + "hyper-tls", 1296 + "hyper-util", 1297 + "js-sys", 1298 + "log", 1299 + "mime", 1300 + "native-tls", 1301 + "percent-encoding", 1302 + "pin-project-lite", 1303 + "rustls-pki-types", 1304 + "serde", 1305 + "serde_json", 1306 + "serde_urlencoded", 1307 + "sync_wrapper", 1308 + "tokio", 1309 + "tokio-native-tls", 1310 + "tower", 1311 + "tower-http", 1312 + "tower-service", 1313 + "url", 1314 + "wasm-bindgen", 1315 + "wasm-bindgen-futures", 1316 + "web-sys", 1317 + ] 1318 + 1319 + [[package]] 1320 + name = "ring" 1321 + version = "0.17.14" 1322 + source = "registry+https://github.com/rust-lang/crates.io-index" 1323 + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 1324 + dependencies = [ 1325 + "cc", 1326 + "cfg-if", 1327 + "getrandom 0.2.16", 1328 + "libc", 1329 + "untrusted", 1330 + "windows-sys 0.52.0", 1331 + ] 1332 + 1333 + [[package]] 1334 name = "rustc-demangle" 1335 version = "0.1.26" 1336 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1343 checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 1344 1345 [[package]] 1346 + name = "rustix" 1347 + version = "1.0.8" 1348 + source = "registry+https://github.com/rust-lang/crates.io-index" 1349 + checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" 1350 + dependencies = [ 1351 + "bitflags", 1352 + "errno", 1353 + "libc", 1354 + "linux-raw-sys", 1355 + "windows-sys 0.59.0", 1356 + ] 1357 + 1358 + [[package]] 1359 + name = "rustls" 1360 + version = "0.23.31" 1361 + source = "registry+https://github.com/rust-lang/crates.io-index" 1362 + checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" 1363 + dependencies = [ 1364 + "once_cell", 1365 + "rustls-pki-types", 1366 + "rustls-webpki", 1367 + "subtle", 1368 + "zeroize", 1369 + ] 1370 + 1371 + [[package]] 1372 + name = "rustls-pki-types" 1373 + version = "1.12.0" 1374 + source = "registry+https://github.com/rust-lang/crates.io-index" 1375 + checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 1376 + dependencies = [ 1377 + "zeroize", 1378 + ] 1379 + 1380 + [[package]] 1381 + name = "rustls-webpki" 1382 + version = "0.103.4" 1383 + source = "registry+https://github.com/rust-lang/crates.io-index" 1384 + checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" 1385 + dependencies = [ 1386 + "ring", 1387 + "rustls-pki-types", 1388 + "untrusted", 1389 + ] 1390 + 1391 + [[package]] 1392 name = "rustversion" 1393 version = "1.0.22" 1394 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1401 checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 1402 1403 [[package]] 1404 + name = "schannel" 1405 + version = "0.1.27" 1406 + source = "registry+https://github.com/rust-lang/crates.io-index" 1407 + checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" 1408 + dependencies = [ 1409 + "windows-sys 0.59.0", 1410 + ] 1411 + 1412 + [[package]] 1413 name = "scopeguard" 1414 version = "1.2.0" 1415 source = "registry+https://github.com/rust-lang/crates.io-index" 1416 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1417 1418 [[package]] 1419 + name = "scraper" 1420 + version = "0.24.0" 1421 + source = "registry+https://github.com/rust-lang/crates.io-index" 1422 + checksum = "e5f3a24d916e78954af99281a455168d4a9515d65eca99a18da1b813689c4ad9" 1423 + dependencies = [ 1424 + "cssparser", 1425 + "ego-tree", 1426 + "getopts", 1427 + "html5ever", 1428 + "precomputed-hash", 1429 + "selectors", 1430 + "tendril", 1431 + ] 1432 + 1433 + [[package]] 1434 + name = "security-framework" 1435 + version = "2.11.1" 1436 + source = "registry+https://github.com/rust-lang/crates.io-index" 1437 + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" 1438 + dependencies = [ 1439 + "bitflags", 1440 + "core-foundation", 1441 + "core-foundation-sys", 1442 + "libc", 1443 + "security-framework-sys", 1444 + ] 1445 + 1446 + [[package]] 1447 + name = "security-framework-sys" 1448 + version = "2.14.0" 1449 + source = "registry+https://github.com/rust-lang/crates.io-index" 1450 + checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" 1451 + dependencies = [ 1452 + "core-foundation-sys", 1453 + "libc", 1454 + ] 1455 + 1456 + [[package]] 1457 + name = "selectors" 1458 + version = "0.31.0" 1459 + source = "registry+https://github.com/rust-lang/crates.io-index" 1460 + checksum = "5685b6ae43bfcf7d2e7dfcfb5d8e8f61b46442c902531e41a32a9a8bf0ee0fb6" 1461 + dependencies = [ 1462 + "bitflags", 1463 + "cssparser", 1464 + "derive_more", 1465 + "fxhash", 1466 + "log", 1467 + "new_debug_unreachable", 1468 + "phf", 1469 + "phf_codegen", 1470 + "precomputed-hash", 1471 + "servo_arc", 1472 + "smallvec", 1473 + ] 1474 + 1475 + [[package]] 1476 name = "serde" 1477 version = "1.0.219" 1478 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1527 ] 1528 1529 [[package]] 1530 + name = "servo_arc" 1531 + version = "0.4.1" 1532 + source = "registry+https://github.com/rust-lang/crates.io-index" 1533 + checksum = "204ea332803bd95a0b60388590d59cf6468ec9becf626e2451f1d26a1d972de4" 1534 + dependencies = [ 1535 + "stable_deref_trait", 1536 + ] 1537 + 1538 + [[package]] 1539 name = "sharded-slab" 1540 version = "0.1.7" 1541 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1560 ] 1561 1562 [[package]] 1563 + name = "siphasher" 1564 + version = "1.0.1" 1565 + source = "registry+https://github.com/rust-lang/crates.io-index" 1566 + checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 1567 + 1568 + [[package]] 1569 name = "slab" 1570 version = "0.4.11" 1571 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1584 checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" 1585 dependencies = [ 1586 "libc", 1587 + "windows-sys 0.59.0", 1588 ] 1589 + 1590 + [[package]] 1591 + name = "stable_deref_trait" 1592 + version = "1.2.0" 1593 + source = "registry+https://github.com/rust-lang/crates.io-index" 1594 + checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1595 + 1596 + [[package]] 1597 + name = "string_cache" 1598 + version = "0.8.9" 1599 + source = "registry+https://github.com/rust-lang/crates.io-index" 1600 + checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" 1601 + dependencies = [ 1602 + "new_debug_unreachable", 1603 + "parking_lot", 1604 + "phf_shared", 1605 + "precomputed-hash", 1606 + "serde", 1607 + ] 1608 + 1609 + [[package]] 1610 + name = "string_cache_codegen" 1611 + version = "0.5.4" 1612 + source = "registry+https://github.com/rust-lang/crates.io-index" 1613 + checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" 1614 + dependencies = [ 1615 + "phf_generator", 1616 + "phf_shared", 1617 + "proc-macro2", 1618 + "quote", 1619 + ] 1620 + 1621 + [[package]] 1622 + name = "subtle" 1623 + version = "2.6.1" 1624 + source = "registry+https://github.com/rust-lang/crates.io-index" 1625 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 1626 1627 [[package]] 1628 name = "syn" ··· 1640 version = "1.0.2" 1641 source = "registry+https://github.com/rust-lang/crates.io-index" 1642 checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 1643 + dependencies = [ 1644 + "futures-core", 1645 + ] 1646 + 1647 + [[package]] 1648 + name = "synstructure" 1649 + version = "0.13.2" 1650 + source = "registry+https://github.com/rust-lang/crates.io-index" 1651 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 1652 + dependencies = [ 1653 + "proc-macro2", 1654 + "quote", 1655 + "syn", 1656 + ] 1657 + 1658 + [[package]] 1659 + name = "system-configuration" 1660 + version = "0.6.1" 1661 + source = "registry+https://github.com/rust-lang/crates.io-index" 1662 + checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 1663 + dependencies = [ 1664 + "bitflags", 1665 + "core-foundation", 1666 + "system-configuration-sys", 1667 + ] 1668 + 1669 + [[package]] 1670 + name = "system-configuration-sys" 1671 + version = "0.6.0" 1672 + source = "registry+https://github.com/rust-lang/crates.io-index" 1673 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 1674 + dependencies = [ 1675 + "core-foundation-sys", 1676 + "libc", 1677 + ] 1678 + 1679 + [[package]] 1680 + name = "tempfile" 1681 + version = "3.21.0" 1682 + source = "registry+https://github.com/rust-lang/crates.io-index" 1683 + checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" 1684 + dependencies = [ 1685 + "fastrand", 1686 + "getrandom 0.3.3", 1687 + "once_cell", 1688 + "rustix", 1689 + "windows-sys 0.59.0", 1690 + ] 1691 + 1692 + [[package]] 1693 + name = "tendril" 1694 + version = "0.4.3" 1695 + source = "registry+https://github.com/rust-lang/crates.io-index" 1696 + checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 1697 + dependencies = [ 1698 + "futf", 1699 + "mac", 1700 + "utf-8", 1701 + ] 1702 1703 [[package]] 1704 name = "thread_local" ··· 1710 ] 1711 1712 [[package]] 1713 + name = "tinystr" 1714 + version = "0.8.1" 1715 + source = "registry+https://github.com/rust-lang/crates.io-index" 1716 + checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 1717 + dependencies = [ 1718 + "displaydoc", 1719 + "zerovec", 1720 + ] 1721 + 1722 + [[package]] 1723 name = "tokio" 1724 version = "1.47.1" 1725 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1736 "slab", 1737 "socket2", 1738 "tokio-macros", 1739 + "windows-sys 0.59.0", 1740 ] 1741 1742 [[package]] ··· 1751 ] 1752 1753 [[package]] 1754 + name = "tokio-native-tls" 1755 + version = "0.3.1" 1756 + source = "registry+https://github.com/rust-lang/crates.io-index" 1757 + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 1758 + dependencies = [ 1759 + "native-tls", 1760 + "tokio", 1761 + ] 1762 + 1763 + [[package]] 1764 + name = "tokio-rustls" 1765 + version = "0.26.2" 1766 + source = "registry+https://github.com/rust-lang/crates.io-index" 1767 + checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" 1768 + dependencies = [ 1769 + "rustls", 1770 + "tokio", 1771 + ] 1772 + 1773 + [[package]] 1774 name = "tokio-util" 1775 version = "0.7.16" 1776 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1815 "http-body-util", 1816 "http-range-header", 1817 "httpdate", 1818 + "iri-string", 1819 "mime", 1820 "mime_guess", 1821 "percent-encoding", 1822 "pin-project-lite", 1823 "tokio", 1824 "tokio-util", 1825 + "tower", 1826 "tower-layer", 1827 "tower-service", 1828 "tracing", ··· 1899 ] 1900 1901 [[package]] 1902 + name = "try-lock" 1903 + version = "0.2.5" 1904 + source = "registry+https://github.com/rust-lang/crates.io-index" 1905 + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1906 + 1907 + [[package]] 1908 name = "unicase" 1909 version = "2.8.1" 1910 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1917 checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 1918 1919 [[package]] 1920 + name = "unicode-width" 1921 + version = "0.2.1" 1922 + source = "registry+https://github.com/rust-lang/crates.io-index" 1923 + checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" 1924 + 1925 + [[package]] 1926 + name = "untrusted" 1927 + version = "0.9.0" 1928 + source = "registry+https://github.com/rust-lang/crates.io-index" 1929 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 1930 + 1931 + [[package]] 1932 + name = "url" 1933 + version = "2.5.7" 1934 + source = "registry+https://github.com/rust-lang/crates.io-index" 1935 + checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 1936 + dependencies = [ 1937 + "form_urlencoded", 1938 + "idna", 1939 + "percent-encoding", 1940 + "serde", 1941 + ] 1942 + 1943 + [[package]] 1944 + name = "utf-8" 1945 + version = "0.7.6" 1946 + source = "registry+https://github.com/rust-lang/crates.io-index" 1947 + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 1948 + 1949 + [[package]] 1950 + name = "utf8_iter" 1951 + version = "1.0.4" 1952 + source = "registry+https://github.com/rust-lang/crates.io-index" 1953 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1954 + 1955 + [[package]] 1956 name = "valuable" 1957 version = "0.1.1" 1958 source = "registry+https://github.com/rust-lang/crates.io-index" 1959 checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 1960 1961 [[package]] 1962 + name = "vcpkg" 1963 + version = "0.2.15" 1964 + source = "registry+https://github.com/rust-lang/crates.io-index" 1965 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1966 + 1967 + [[package]] 1968 + name = "want" 1969 + version = "0.3.1" 1970 + source = "registry+https://github.com/rust-lang/crates.io-index" 1971 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1972 + dependencies = [ 1973 + "try-lock", 1974 + ] 1975 + 1976 + [[package]] 1977 name = "wasi" 1978 version = "0.11.1+wasi-snapshot-preview1" 1979 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1989 ] 1990 1991 [[package]] 1992 + name = "wasm-bindgen" 1993 + version = "0.2.100" 1994 + source = "registry+https://github.com/rust-lang/crates.io-index" 1995 + checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 1996 + dependencies = [ 1997 + "cfg-if", 1998 + "once_cell", 1999 + "rustversion", 2000 + "wasm-bindgen-macro", 2001 + ] 2002 + 2003 + [[package]] 2004 + name = "wasm-bindgen-backend" 2005 + version = "0.2.100" 2006 + source = "registry+https://github.com/rust-lang/crates.io-index" 2007 + checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 2008 + dependencies = [ 2009 + "bumpalo", 2010 + "log", 2011 + "proc-macro2", 2012 + "quote", 2013 + "syn", 2014 + "wasm-bindgen-shared", 2015 + ] 2016 + 2017 + [[package]] 2018 + name = "wasm-bindgen-futures" 2019 + version = "0.4.50" 2020 + source = "registry+https://github.com/rust-lang/crates.io-index" 2021 + checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 2022 + dependencies = [ 2023 + "cfg-if", 2024 + "js-sys", 2025 + "once_cell", 2026 + "wasm-bindgen", 2027 + "web-sys", 2028 + ] 2029 + 2030 + [[package]] 2031 + name = "wasm-bindgen-macro" 2032 + version = "0.2.100" 2033 + source = "registry+https://github.com/rust-lang/crates.io-index" 2034 + checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 2035 + dependencies = [ 2036 + "quote", 2037 + "wasm-bindgen-macro-support", 2038 + ] 2039 + 2040 + [[package]] 2041 + name = "wasm-bindgen-macro-support" 2042 + version = "0.2.100" 2043 + source = "registry+https://github.com/rust-lang/crates.io-index" 2044 + checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 2045 + dependencies = [ 2046 + "proc-macro2", 2047 + "quote", 2048 + "syn", 2049 + "wasm-bindgen-backend", 2050 + "wasm-bindgen-shared", 2051 + ] 2052 + 2053 + [[package]] 2054 + name = "wasm-bindgen-shared" 2055 + version = "0.2.100" 2056 + source = "registry+https://github.com/rust-lang/crates.io-index" 2057 + checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 2058 + dependencies = [ 2059 + "unicode-ident", 2060 + ] 2061 + 2062 + [[package]] 2063 + name = "web-sys" 2064 + version = "0.3.77" 2065 + source = "registry+https://github.com/rust-lang/crates.io-index" 2066 + checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 2067 + dependencies = [ 2068 + "js-sys", 2069 + "wasm-bindgen", 2070 + ] 2071 + 2072 + [[package]] 2073 + name = "web_atoms" 2074 + version = "0.1.3" 2075 + source = "registry+https://github.com/rust-lang/crates.io-index" 2076 + checksum = "57ffde1dc01240bdf9992e3205668b235e59421fd085e8a317ed98da0178d414" 2077 + dependencies = [ 2078 + "phf", 2079 + "phf_codegen", 2080 + "string_cache", 2081 + "string_cache_codegen", 2082 + ] 2083 + 2084 + [[package]] 2085 name = "winapi" 2086 version = "0.3.9" 2087 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2104 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2105 2106 [[package]] 2107 + name = "windows-link" 2108 + version = "0.1.3" 2109 + source = "registry+https://github.com/rust-lang/crates.io-index" 2110 + checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 2111 + 2112 + [[package]] 2113 + name = "windows-registry" 2114 + version = "0.5.3" 2115 + source = "registry+https://github.com/rust-lang/crates.io-index" 2116 + checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" 2117 + dependencies = [ 2118 + "windows-link", 2119 + "windows-result", 2120 + "windows-strings", 2121 + ] 2122 + 2123 + [[package]] 2124 + name = "windows-result" 2125 + version = "0.3.4" 2126 + source = "registry+https://github.com/rust-lang/crates.io-index" 2127 + checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 2128 + dependencies = [ 2129 + "windows-link", 2130 + ] 2131 + 2132 + [[package]] 2133 + name = "windows-strings" 2134 + version = "0.4.2" 2135 + source = "registry+https://github.com/rust-lang/crates.io-index" 2136 + checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 2137 + dependencies = [ 2138 + "windows-link", 2139 + ] 2140 + 2141 + [[package]] 2142 + name = "windows-sys" 2143 + version = "0.52.0" 2144 + source = "registry+https://github.com/rust-lang/crates.io-index" 2145 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2146 + dependencies = [ 2147 + "windows-targets", 2148 + ] 2149 + 2150 + [[package]] 2151 name = "windows-sys" 2152 version = "0.59.0" 2153 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2236 checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 2237 dependencies = [ 2238 "bitflags", 2239 + ] 2240 + 2241 + [[package]] 2242 + name = "writeable" 2243 + version = "0.6.1" 2244 + source = "registry+https://github.com/rust-lang/crates.io-index" 2245 + checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 2246 + 2247 + [[package]] 2248 + name = "yoke" 2249 + version = "0.8.0" 2250 + source = "registry+https://github.com/rust-lang/crates.io-index" 2251 + checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 2252 + dependencies = [ 2253 + "serde", 2254 + "stable_deref_trait", 2255 + "yoke-derive", 2256 + "zerofrom", 2257 + ] 2258 + 2259 + [[package]] 2260 + name = "yoke-derive" 2261 + version = "0.8.0" 2262 + source = "registry+https://github.com/rust-lang/crates.io-index" 2263 + checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 2264 + dependencies = [ 2265 + "proc-macro2", 2266 + "quote", 2267 + "syn", 2268 + "synstructure", 2269 + ] 2270 + 2271 + [[package]] 2272 + name = "zerofrom" 2273 + version = "0.1.6" 2274 + source = "registry+https://github.com/rust-lang/crates.io-index" 2275 + checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 2276 + dependencies = [ 2277 + "zerofrom-derive", 2278 + ] 2279 + 2280 + [[package]] 2281 + name = "zerofrom-derive" 2282 + version = "0.1.6" 2283 + source = "registry+https://github.com/rust-lang/crates.io-index" 2284 + checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 2285 + dependencies = [ 2286 + "proc-macro2", 2287 + "quote", 2288 + "syn", 2289 + "synstructure", 2290 + ] 2291 + 2292 + [[package]] 2293 + name = "zeroize" 2294 + version = "1.8.1" 2295 + source = "registry+https://github.com/rust-lang/crates.io-index" 2296 + checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 2297 + 2298 + [[package]] 2299 + name = "zerotrie" 2300 + version = "0.2.2" 2301 + source = "registry+https://github.com/rust-lang/crates.io-index" 2302 + checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 2303 + dependencies = [ 2304 + "displaydoc", 2305 + "yoke", 2306 + "zerofrom", 2307 + ] 2308 + 2309 + [[package]] 2310 + name = "zerovec" 2311 + version = "0.11.4" 2312 + source = "registry+https://github.com/rust-lang/crates.io-index" 2313 + checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" 2314 + dependencies = [ 2315 + "yoke", 2316 + "zerofrom", 2317 + "zerovec-derive", 2318 + ] 2319 + 2320 + [[package]] 2321 + name = "zerovec-derive" 2322 + version = "0.11.1" 2323 + source = "registry+https://github.com/rust-lang/crates.io-index" 2324 + checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 2325 + dependencies = [ 2326 + "proc-macro2", 2327 + "quote", 2328 + "syn", 2329 ] 2330 2331 [[package]]
+2
server/Cargo.toml
··· 9 anyhow = "1.0.57" 10 askama = "0.14.0" 11 axum = "0.8.1" 12 tokio = { version = "1.18.2", features = ["full"] } 13 tower = "0.5.2" 14 tower-http = { version = "0.6.2", features = ["compression-full", "fs", "trace", "set-header"] }
··· 9 anyhow = "1.0.57" 10 askama = "0.14.0" 11 axum = "0.8.1" 12 + reqwest = "0.12.23" 13 + scraper = "0.24.0" 14 tokio = { version = "1.18.2", features = ["full"] } 15 tower = "0.5.2" 16 tower-http = { version = "0.6.2", features = ["compression-full", "fs", "trace", "set-header"] }
+12 -3
server/src/index.rs
··· 1 use askama::Template; 2 3 #[derive(Template, Debug, Clone)] 4 #[template(path = "index.html")] 5 - pub struct RootTemplate {} 6 7 impl RootTemplate { 8 - pub fn new() -> RootTemplate { 9 - RootTemplate {} 10 } 11 }
··· 1 + use crate::scrapers::backloggd::Backloggd; 2 + 3 use askama::Template; 4 5 #[derive(Template, Debug, Clone)] 6 #[template(path = "index.html")] 7 + pub struct RootTemplate { 8 + game: Option<Backloggd>, 9 + } 10 11 impl RootTemplate { 12 + pub async fn new() -> RootTemplate { 13 + RootTemplate { 14 + game: Backloggd::fetch() 15 + .await 16 + .map_err(|error| tracing::warn!(%error, "failed to scrape Backloggd")) 17 + .ok(), 18 + } 19 } 20 }
+2 -1
server/src/main.rs
··· 1 mod index; 2 3 use std::net::SocketAddr; 4 ··· 43 } 44 45 async fn render_index_handler() -> impl IntoResponse { 46 - let template = RootTemplate::new(); 47 template.render().map(Html).map_err(|err| { 48 tracing::error!("failed to render index: {err:?}"); 49 StatusCode::INTERNAL_SERVER_ERROR
··· 1 mod index; 2 + mod scrapers; 3 4 use std::net::SocketAddr; 5 ··· 44 } 45 46 async fn render_index_handler() -> impl IntoResponse { 47 + let template = RootTemplate::new().await; 48 template.render().map(Html).map_err(|err| { 49 tracing::error!("failed to render index: {err:?}"); 50 StatusCode::INTERNAL_SERVER_ERROR
+1
server/src/scrapers.rs
···
··· 1 + pub mod backloggd;
+51
server/src/scrapers/backloggd.rs
···
··· 1 + use std::sync::LazyLock; 2 + 3 + use anyhow::Context; 4 + use scraper::{Html, Selector}; 5 + 6 + #[derive(Debug, Clone)] 7 + pub struct Backloggd { 8 + pub name: String, 9 + pub image: String, 10 + } 11 + 12 + impl Backloggd { 13 + pub async fn fetch() -> anyhow::Result<Self> { 14 + static FIRST_ENTRY_SEL: LazyLock<Selector> = 15 + LazyLock::new(|| Selector::parse(".journal_entry:first-child").unwrap()); 16 + static NAME_SEL: LazyLock<Selector> = 17 + LazyLock::new(|| Selector::parse(".game-name a").unwrap()); 18 + static IMAGE_SEL: LazyLock<Selector> = 19 + LazyLock::new(|| Selector::parse(".card-img").unwrap()); 20 + 21 + let html = reqwest::get("https://backloggd.com/u/cherryfunk/journal") 22 + .await 23 + .context("failed to fetch Backloggd page")? 24 + .text() 25 + .await 26 + .context("failed to get HTML text")?; 27 + let document = Html::parse_document(&html); 28 + 29 + let first_entry = document 30 + .select(&FIRST_ENTRY_SEL) 31 + .next() 32 + .context("couldn't find any journal entries")?; 33 + let name = first_entry 34 + .select(&NAME_SEL) 35 + .next() 36 + .context("couldn't find name element")? 37 + .text() 38 + .next() 39 + .context("name element didn't have any text")? 40 + .to_owned(); 41 + let image = first_entry 42 + .select(&IMAGE_SEL) 43 + .next() 44 + .context("couldn't find image element")? 45 + .attr("src") 46 + .context("image element didn't have src attribute")? 47 + .to_owned(); 48 + 49 + Ok(Self { name, image }) 50 + } 51 + }
+9
server/templates/index.html
··· 17 >.computer 18 </h1> 19 </div> 20 </div> 21 </body> 22 </html>
··· 17 >.computer 18 </h1> 19 </div> 20 + <div class="flex justify-center"> 21 + {% if let Some(game) = game -%} 22 + <img 23 + class="p-3" 24 + src="{{ game.image }}" 25 + alt="Cover art for {{ game.name }}" 26 + /> 27 + {%- endif %} 28 + </div> 29 </div> 30 </body> 31 </html>