Something went wrong

Thank you for being patient! We're working hard on resolving the issue

Connector module - Lona Docs Log in

Whoop connector module

Behind features = ["connector"]. Maps the :~whoop:{authId}:<metric> rowkey family.

What's exposed

tento_whoop::connector::{
  Whoop,
  WhoopClient,
  WhoopBackendDeps,
  WhoopAuth,
  WhoopParams,
  sleep::{Sleep, logs::Logs},
  recovery::{Recovery, logs::Logs},
}

WhoopBackendDeps

Identical signature to Garmin's:

pub trait WhoopBackendDeps: Send + Sync {
  fn persist_cells<'a>(&'a self, row_id: Uuid, cells: Vec<Cell>) -> …;
  fn recent_log_cells<'a>(&'a self, owner: &'a Owner, lookup_key: &'a str) -> …;
}

The thin-deps + provider-drives-sync pattern. Row bodies in tento_whoop::connector::sleep::Sleep::sync and recovery walk windows via wearable_window_for_stage, hit the Whoop API, and emit cells.

Notes

  • Whoop tokens carry refresh; Integration::client calls auth.acquire_handle() which returns a fresh access token if the cached one expired.
  • Auth-failure errors are tagged "whoop_auth_expired" so the host can surface a re-auth prompt to the user.