Skip to main content

edlearn_client/
membership.rs

1use serde::Deserialize;
2
3use crate::{course::Course, Client, Result};
4
5/// Ties a user to a course
6#[derive(Debug, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct UserMembership {
9    pub id: String,
10    pub user_id: String,
11    pub course_id: String,
12    pub course: Course,
13}
14
15#[derive(Deserialize)]
16struct UserMembershipResp {
17    results: Vec<UserMembership>,
18}
19
20impl Client {
21    pub fn user_memberships(&self, user_id: &str) -> Result<Vec<UserMembership>> {
22        self.get::<UserMembershipResp>(&format!(
23            "learn/api/public/v1/users/{}/courses?expand=course",
24            user_id
25        ))
26        .map(|r| r.results)
27    }
28}