Skip to content

Commit 9df6dda

Browse files
committed
Update readme
1 parent b887bc0 commit 9df6dda

1 file changed

Lines changed: 34 additions & 25 deletions

File tree

README.md

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# OSARS Client Library
1+
# OSARS Client Library
22

33
A comprehensive Rust client library for interacting with the OpenScheduleAPI. This library provides type-safe access to college, campus, group, and schedule data from educational institutions through the OpenScheduleAPI backend.
44

55
**Built for OpenScheduleAPI**
6-
GitHub: [thisishyum/OpenScheduleApi](https://github.com/thisishyum/OpenScheduleApi)
6+
GitHub: [thisishyum/OpenScheduleApi](https://github.com/thisishyum/OpenScheduleApi )
77

88
## Features
99

@@ -21,14 +21,14 @@ Add this to your `Cargo.toml`:
2121

2222
```toml
2323
[dependencies]
24-
osars = "0.1.0"
24+
osars = "0.3.0"
2525
```
2626

2727
For logging support, enable the feature:
2828

2929
```toml
3030
[dependencies]
31-
osars = { version = "0.1.0", features = ["logging"] }
31+
osars = { version = "0.3.0", features = ["logging"] }
3232
```
3333

3434
## Quick Start
@@ -39,7 +39,7 @@ use osars::Client;
3939
#[tokio::main]
4040
async fn main() -> Result<(), Box<dyn std::error::Error>> {
4141
// Initialize client with OpenScheduleAPI endpoint
42-
let client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen/");
42+
let client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen");
4343

4444
// List all colleges from OpenScheduleAPI
4545
let colleges = client.colleges().send().await?;
@@ -91,13 +91,13 @@ The main entry point that manages OpenScheduleAPI connections and provides query
9191

9292
```rust
9393
// Basic client for OpenScheduleAPI
94-
let client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen/");
94+
let client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen");
9595

9696
// Client with custom HTTP configuration for OpenScheduleAPI
9797
let http_client = reqwest::Client::builder()
9898
.timeout(std::time::Duration::from_secs(30))
9999
.build()?;
100-
let client = Client::with_client("https://api.thisishyum.ru/schedule_api/tyumen/", http_client);
100+
let client = Client::with_client("https://api.thisishyum.ru/schedule_api/tyumen", http_client);
101101

102102
// Client with default college for OpenScheduleAPI queries
103103
let client = client.with_college(123);
@@ -127,7 +127,7 @@ client.schedule(456)
127127
.send().await?;
128128

129129
client.schedule(456)
130-
.date("2024-01-15")
130+
.date("15-01-2024") // Format: dd-mm-yyyy
131131
.send().await?;
132132
```
133133

@@ -234,44 +234,52 @@ match client.colleges().send().await {
234234
Err(Error::NotFound(msg)) => {
235235
eprintln!("Resource not found in OpenScheduleAPI: {}", msg);
236236
}
237+
Err(Error::Unauthorized) => {
238+
eprintln!("Authentication required for this endpoint");
239+
}
237240
}
238241
```
239242

240243
### Custom OpenScheduleAPI Endpoints
241244

242245
```rust
243246
// For different OpenScheduleAPI instances
244-
let tyumen_client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen/");
245-
let other_client = Client::new("https://api.example.com/schedule_api/");
247+
let tyumen_client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen");
248+
let other_client = Client::new("https://api.example.com/schedule_api");
246249
```
247250

248251
### Logging with OpenScheduleAPI
249252

250-
Enable the logging feature and initialize:
253+
Enable the logging feature and initialize tracing in your application:
251254

252255
```rust
253-
use osars::logging;
254-
255-
// Initialize logging
256-
logging::init();
256+
use tracing_subscriber::EnvFilter;
257257

258-
let client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen/");
259-
// All OpenScheduleAPI requests and responses will be logged
258+
#[tokio::main]
259+
async fn main() {
260+
// Initialize tracing
261+
tracing_subscriber::fmt()
262+
.with_env_filter(EnvFilter::from_default_env())
263+
.init();
264+
265+
let client = Client::new("https://api.thisishyum.ru/schedule_api/tyumen");
266+
// All OpenScheduleAPI requests and responses will be logged
267+
}
260268
```
261269

262270
## Testing
263271

264-
The library includes comprehensive tests against the actual OpenScheduleAPI:
272+
The library includes comprehensive tests:
265273

266274
```bash
267275
# Run unit tests
268276
cargo test
269277

270-
# Run integration tests against OpenScheduleAPI
271-
cargo test --test integration_test
278+
# Run integration tests with mock server
279+
cargo test --test integration
272280

273-
# Run documentation tests
274-
cargo test --doc
281+
# Run all tests with logging
282+
RUST_LOG=debug cargo test
275283
```
276284

277285
## API Reference
@@ -288,10 +296,11 @@ cargo test --doc
288296
- `schedule(group_id)` - Query schedule for group
289297
- `today(group_id)` - Query today's schedule
290298
- `tomorrow(group_id)` - Query tomorrow's schedule
299+
- `authenticated()` - Create authenticated client for private endpoints
291300

292301
### Query Parameters
293302
- `name(pattern)` - Filter by name pattern
294-
- `date("YYYY-MM-DD")` - Specific date schedule
303+
- `date("dd-mm-yyyy")` - Specific date schedule (OpenScheduleAPI format)
295304
- `week(Week)` - Week-based schedule (Previous/Current/Next)
296305
- `weekday(Weekday)` - Specific weekday schedule
297306
- `today()` - Today's schedule
@@ -303,12 +312,12 @@ This client library is designed to work with the OpenScheduleAPI project. For is
303312

304313
## License
305314

306-
This project is licensed under the same license as the OpenScheduleAPI project.
315+
MIT License - see [LICENSE](LICENSE) for details.
307316

308317
## Related Projects
309318

310319
- [OpenScheduleAPI](https://github.com/thisishyum/OpenScheduleApi) - The main API backend
311-
- OpenScheduleAPI Documentation - Comprehensive API documentation
320+
- [osatui](https://github.com/bircoder432/osatui) - Terminal UI client using this library
312321

313322
## Support
314323

0 commit comments

Comments
 (0)