1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//! # canvas-lms-api
//!
//! An async Rust client for the [Instructure Canvas LMS REST API](https://canvas.instructure.com/doc/api/).
//!
//! Licensed under the [MIT License](https://github.com/RobertConde/canvas-lms-api/blob/main/LICENSE).
//!
//! ## Quickstart
//!
//! ```no_run
//! # #[tokio::main] async fn main() -> canvas_lms_api::Result<()> {
//! use canvas_lms_api::Canvas;
//!
//! let canvas = Canvas::new("https://canvas.example.edu", "your-access-token")?;
//!
//! // Fetch a course
//! let course = canvas.get_course(1).await?;
//! println!("{}", course.name.as_deref().unwrap_or_default());
//!
//! // Stream all assignments lazily
//! let assignments = course.get_assignments().collect_all().await?;
//! println!("{} assignments", assignments.len());
//! # Ok(()) }
//! ```
//!
//! ## Features
//!
//! | Feature | Default | Description |
//! |---------|---------|-------------|
//! | `async` | yes | Async API via `tokio` + `reqwest` |
//! | `blocking` | no | `CanvasBlocking` — sync wrapper, no `async`/`.await` needed |
//! | `new-quizzes` | no | New Quizzes endpoint (`/api/quiz/v1/`) |
//! | `graphql` | no | GraphQL endpoint support |
//! | `full` | no | All optional features |
//!
//! ## Pagination
//!
//! Methods returning multiple resources return a [`PageStream<T>`], which fetches pages
//! lazily from Canvas's paginated API. Call [`.collect_all()`][PageStream::collect_all]
//! to gather everything into a `Vec`, or iterate page-by-page as needed.
pub
pub use Canvas;
pub use ;
pub use PageStream;
pub use UploadRequest;
pub use CanvasBlocking;