IsDayOff is a .NET library for API isdayoff service (https://isdayoff.ru/)
To work with IsDayOff API you need only create IsDayOff
class instance and call its methods.
IsDayOff for .NET also provides useful configuration IsDayOffSettings
for configure behaviour you need.
var defaultSettings = IsDayOffSettings.Default;
var settings = IsDayOffSettings.Build
.UseDefaultCountry(Country.USA)
.Create();
var isDayOff = new IsDayOff(settings);
var today = DateTime.Today;
DayType todayDayOffInfo = await isDayOff.CheckDayAsync(today);
List<DayOffDateTime> currentMonthDayOffInfo = await isDayOff.CheckMonthAsync(today.Year, today.Month);
List<DayOffDateTime> currentYearDayOffInfo = await isDayOff.CheckYearAsync(today.Year);
List<DayOffDateTime> currentYearDayOffInfoForRussia = await isDayOff.CheckYearAsync(today.Year, Country.Russia);
IsDayOff for .NET provides built-in in-memory cache (disabled by-default)
var settings = IsDayOffSettings.Build
.UseInMemoryCache() // Enable cache
.Create();
var isDayOff = new IsDayOff(settings);
var firstRequest = await isDayOff.CheckDayAsync(DateTime.Today); // Performs request to external service
var secondRequest = await isDayOff.CheckDayAsync(DateTime.Today); // No request performs
It works also if you trying to get day off information for inner date range:
var firstRequestForYear = await isDayOff.CheckYearAsync(DateTime.Today.Year); // Performs request to external service for current year
var secondRequestForMonthWithinYear = await isDayOff.CheckMonthAsync(DateTime.Today.Year, 06); // No real request performs because year cache by previous request used
You can also inject your custom cache realization through
implementation of IIsDayOffCache
interface and register it in settings:
var customCache = new CustomCache(); // CustomCache must implement IIsDayOffCache
var settings = IsDayOffSettings.Build
.UseCustomCache(customCache) // Inject cache
.Create();
var isDayOff = new IsDayOff(settings);
It is useful if you want to cache external service responses in file or in database.
This library provides additional trace logging.
You can enable logging through settings this way:
var settings = IsDayOffSettings.Build
.UseLogging(SourceLevels.All) // Enable debug logs and set required log level
.Create();
var isDayOff = new IsDayOff(settings);
Or you can enable and setup logging more flexible through default TraceSources
configuration in *.config
file of your application.
See docs for details.
TraceSource
for all logs within IsDayOff library named as IsDayOff
Q: Is this library fully thread safe?
A: Yes. You can use one instance between multiple threads with no doubt.
Q: Why some resources (urls) are not available through that library?
A: Because that functions built into .NET library or they can be created using already existing methods of library.
Here a full list of isdayoff resources that is not implemented in library and analogues that can be used to achieve similar behaviour:
isdayoff resource | .NET analogue |
---|---|
/now |
DateTime.Now |
/today |
new IsDayOff().CheckDayAsync(DateTime.Today) |
/tomorrow |
new IsDayOff().CheckDayAsync(DateTime.Today.AddDays(1)) |
/api/isleap?year=YYYY |
DateTime.IsLeapYear(YYYY) |