Unofficial library for Holiday API written in Rust. This repo implements interface for original HolidayAPI endpoints seen here.
This project is heavily inspired by holidayapi-node and holiday-api-rust repositories.
Add the following to your Cargo.toml
[dependencies]
holidayapi_rust = "0.1.7"
Or use cargo
cli:
$ cargo add holidayapi_rust
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();
}
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();
- Refactor async call using IntoFuture to remove unnecessary
.get()
calls. - Implements memoization for api calls.
- Add new utility functions on top of raw API.