6 releases
0.1.7 | Oct 6, 2022 |
---|---|
0.1.6 | Oct 3, 2022 |
0.1.1 | Sep 30, 2022 |
#1708 in Asynchronous
25 downloads per month
27KB
426 lines
Holiday API Rust Library
Unofficial library for Holiday API written in Rust. This repo implements interface for original HolidayAPI endpoints seen here.
Acknowledgments
This project is heavily inspired by holidayapi-node and holiday-api-rust repositories.
Installation
Add the following to your Cargo.toml
[dependencies]
holidayapi_rust = "0.1.7"
Or use cargo
cli:
$ cargo add holidayapi_rust
Usage
Basic
use holidayapi_rust::prelude::*;
let holiday_api = HolidayAPI::new("00000000-0000-0000-0000-000000000000").unwrap();
async fn main() {
// Fetch supported countries and subdivisions
let countries: Vec<Country> = holiday_api.countries().get().await.unwrap();
// Fetch supported languages
let languages: Vec<Language> = holiday_api.languages().get().await.unwrap();
// Fetch holidays with minimum parameters
let holidays: Vec<Holiday> = holiday_api.holidays("US", 2020).get().await.unwrap();
}
Builder pattern
use holidayapi_rust::prelude::*;
let holiday_api = HolidayAPI::new(VALID_KEY).unwrap();
// Holidays
let specific_request: Vec<Holiday> = holiday_api
.holidays("jp", 2021)
.pretty(true)
.language("cn")
.public(true)
.get()
.await;
// Countries
let specific_request: Vec<Country> = holiday_api
.countries()
.search("hello world")
.country("US")
.public(true)
.get()
.await
.unwrap();
// Languages
let specific_request: Vec<Language> = holiday_api
.languages()
.search("chinese")
.pretty(true)
.get()
.await
.unwrap();
Future ideas
- Refactor async call using IntoFuture to remove unnecessary
.get()
calls. - Implements memoization for api calls.
- Add new utility functions on top of raw API.
Dependencies
~8–21MB
~301K SLoC