Files
Pac-Man/pacman-server
dependabot[bot] 2d7f7df2c4 chore(deps): bump the rust-patches group across 1 directory with 18 updates
Bumps the rust-patches group with 18 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [glam](https://github.com/bitshifter/glam-rs) | `0.30.5` | `0.30.9` |
| [tracing](https://github.com/tokio-rs/tracing) | `0.1.41` | `0.1.43` |
| [tracing-subscriber](https://github.com/tokio-rs/tracing) | `0.3.20` | `0.3.22` |
| [time](https://github.com/time-rs/time) | `0.3.43` | `0.3.44` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.16` | `2.0.17` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.99` | `1.0.100` |
| [parking_lot](https://github.com/Amanieu/parking_lot) | `0.12.4` | `0.12.5` |
| [windows](https://github.com/microsoft/windows-rs) | `0.62.0` | `0.62.1` |
| [windows-sys](https://github.com/microsoft/windows-rs) | `0.61.0` | `0.61.2` |
| [libc](https://github.com/rust-lang/libc) | `0.2.175` | `0.2.177` |
| [serde](https://github.com/serde-rs/serde) | `1.0.225` | `1.0.228` |
| [axum](https://github.com/tokio-rs/axum) | `0.8.4` | `0.8.7` |
| [reqwest](https://github.com/seanmonstar/reqwest) | `0.12.23` | `0.12.24` |
| [axum-cookie](https://github.com/magwoo/axum-cookie) | `0.2.3` | `0.2.4` |
| [tower-http](https://github.com/tower-rs/tower-http) | `0.6.6` | `0.6.7` |
| [rustls](https://github.com/rustls/rustls) | `0.23.31` | `0.23.35` |
| [image](https://github.com/image-rs/image) | `0.25.8` | `0.25.9` |
| [hyper-util](https://github.com/hyperium/hyper-util) | `0.1.17` | `0.1.18` |



Updates `glam` from 0.30.5 to 0.30.9
- [Changelog](https://github.com/bitshifter/glam-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitshifter/glam-rs/compare/0.30.5...0.30.9)

Updates `tracing` from 0.1.41 to 0.1.43
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.41...tracing-0.1.43)

Updates `tracing-subscriber` from 0.3.20 to 0.3.22
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.20...tracing-subscriber-0.3.22)

Updates `time` from 0.3.43 to 0.3.44
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.43...v0.3.44)

Updates `thiserror` from 2.0.16 to 2.0.17
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.16...2.0.17)

Updates `anyhow` from 1.0.99 to 1.0.100
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.99...1.0.100)

Updates `parking_lot` from 0.12.4 to 0.12.5
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/parking_lot-v0.12.4...parking_lot-v0.12.5)

Updates `windows` from 0.62.0 to 0.62.1
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

Updates `windows-sys` from 0.61.0 to 0.61.2
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

Updates `libc` from 0.2.175 to 0.2.177
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.177/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.175...0.2.177)

Updates `serde` from 1.0.225 to 1.0.228
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.225...v1.0.228)

Updates `axum` from 0.8.4 to 0.8.7
- [Release notes](https://github.com/tokio-rs/axum/releases)
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.8.4...axum-v0.8.7)

Updates `reqwest` from 0.12.23 to 0.12.24
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.23...v0.12.24)

Updates `axum-cookie` from 0.2.3 to 0.2.4
- [Release notes](https://github.com/magwoo/axum-cookie/releases)
- [Commits](https://github.com/magwoo/axum-cookie/commits/0.2.4)

Updates `tower-http` from 0.6.6 to 0.6.7
- [Release notes](https://github.com/tower-rs/tower-http/releases)
- [Commits](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.6...tower-http-0.6.7)

Updates `rustls` from 0.23.31 to 0.23.35
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.31...v/0.23.35)

Updates `image` from 0.25.8 to 0.25.9
- [Changelog](https://github.com/image-rs/image/blob/main/CHANGES.md)
- [Commits](https://github.com/image-rs/image/compare/v0.25.8...v0.25.9)

Updates `hyper-util` from 0.1.17 to 0.1.18
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.17...v0.1.18)

---
updated-dependencies:
- dependency-name: glam
  dependency-version: 0.30.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: tracing
  dependency-version: 0.1.43
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: tracing-subscriber
  dependency-version: 0.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: time
  dependency-version: 0.3.44
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: thiserror
  dependency-version: 2.0.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: anyhow
  dependency-version: 1.0.100
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: parking_lot
  dependency-version: 0.12.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: windows
  dependency-version: 0.62.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: windows-sys
  dependency-version: 0.61.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: libc
  dependency-version: 0.2.177
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: serde
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: axum
  dependency-version: 0.8.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: reqwest
  dependency-version: 0.12.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: axum-cookie
  dependency-version: 0.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: tower-http
  dependency-version: 0.6.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: rustls
  dependency-version: 0.23.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: image
  dependency-version: 0.25.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
- dependency-name: hyper-util
  dependency-version: 0.1.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 00:30:25 +00:00
..

pacman-server

Despite the naming of this crate, it's not a server for the Pac-Man game allowing multiplayer or anything super interesting.

This crate is a webserver that hosts an OAuth login and leaderboard API for the main pacman crate to hook into.

Features

  • Axum Webserver
    • Health Check
    • Inbound Rate Limiting
    • Outbound Rate Limiting
    • Provider Circuit Breaker
  • Database
  • OAuth
    • Discord
    • GitHub
    • Google
  • Leaderboard
    • Score Submission
    • Score Listings
      • Pagination
      • Global / Daily
  • Name Restrictions & Flagging
  • Avatars
    • 8-bit Conversion
    • Storage?
  • Common Server/Client Crate
  • CI/CD & Tests

Todo

  1. Refresh Token Handling (Encryption, Expiration & Refresh Timings)
  2. Refresh Token Background Job
  3. S3 Storage for Avatars
  4. Common Server/Client Crate, Basics
  5. Crate-level Log Level Configuration
  6. Span Tracing
  7. Avatar Pixelization
  8. Leaderboard API
  9. React-based Frontend
  10. Name Restrictions & Flagging
  11. Simple CI/CD Checks & Tests
  12. API Rate Limiting (outbound provider requests)
  13. API Rate Limiting (inbound requests, by IP, by User)
  14. Provider Circuit Breaker
  15. Merge migration files

Notes

Image Handling

Avatar images are stored in S3 as follows:

  • avatars/{user_public_id}/{avatar_hash}.original.png

  • avatars/{user_public_id}/{avatar_hash}.mini.png

  • The original image is converted to PNG and resized to a maximum of 512x512 pixels.

    • Ideally, non-square images are fitted to a square.
  • The mini image is converted to PNG and resized to a maximum of 16x16, 24x24, or 32x32 pixels. TBD.

  • All images receive a Content-Type header of image/png.

Image processing is handled immediately asynchronously, allowing a valid presigned URL to be generated immediately.