#janus #client #url #janus-client

janus_client

Client for Janus, the server powering ISRG's Divvi Up

218 releases

new 0.7.57 Mar 25, 2025
0.7.53 Feb 26, 2025
0.7.45 Dec 11, 2024
0.7.43 Nov 21, 2024
0.1.4 Jul 26, 2022

#131 in HTTP client

Download history 288/week @ 2024-12-04 403/week @ 2024-12-11 110/week @ 2024-12-18 31/week @ 2024-12-25 7/week @ 2025-01-01 236/week @ 2025-01-08 311/week @ 2025-01-15 465/week @ 2025-01-22 247/week @ 2025-01-29 367/week @ 2025-02-05 214/week @ 2025-02-12 431/week @ 2025-02-19 434/week @ 2025-02-26 400/week @ 2025-03-05 281/week @ 2025-03-12 354/week @ 2025-03-19

1,475 downloads per month
Used in divviup-cli

MPL-2.0 license

425KB
10K SLoC

janus_client

Build Status latest version docs badge

janus_client is a self-contained implementation of the Distributed Aggregation Protocol's client role. It is intended for use with Janus and Divvi Up, ISRG's privacy-respecting metrics service. janus_client is published to crates.io by a GitHub Action that runs when a janus release is created.


lib.rs:

A DAP client

This library implements the client role of the DAP-PPM protocol. It uploads measurements to two DAP aggregator servers which in turn compute a statistical aggregate over data from many clients, while preserving the privacy of each client's data.

Examples

use url::Url;
use prio::vdaf::prio3::Prio3Histogram;
use janus_messages::{Duration, TaskId};
use std::str::FromStr;

#[tokio::main]
async fn main() {
    let leader_url = Url::parse("https://leader.example.com/").unwrap();
    let helper_url = Url::parse("https://helper.example.com/").unwrap();
    let vdaf = Prio3Histogram::new_histogram(
        2,
        12,
        4
    ).unwrap();
    let taskid = "rc0jgm1MHH6Q7fcI4ZdNUxas9DAYLcJFK5CL7xUl-gU";
    let task = TaskId::from_str(taskid).unwrap();

    let client = janus_client::Client::new(
        task,
        leader_url,
        helper_url,
        Duration::from_seconds(300),
        vdaf
    )
    .await
    .unwrap();
    client.upload(&5).await.unwrap();
}

Dependencies

~99MB
~2.5M SLoC