Skip to content

ttax00/holidayapi-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Holiday API Rust Library

License GitHub Workflow 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.

About

Holiday API wraper library for rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages