holidayapi_rust

Crates.ioholidayapi_rust
lib.rsholidayapi_rust
version0.1.7
sourcesrc
created_at2022-09-23 09:51:54.815234
updated_at2022-10-06 07:04:40.165037
descriptionA HolidayAPI library for Rust
homepage
repositoryhttps://github.com/TechTheAwesome/holidayapi-rust
max_upload_size
id672372
size28,235
Tech (ttax00)

documentation

README

Holiday API Rust Library

License Test Status Crates.io wakatime

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.
Commit count: 61

cargo fmt