namespace Ombi.Helpers { // This file is part of Hangfire. // Copyright © 2013-2014 Sergey Odinokov. // // Hangfire is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation, either version 3 // of the License, or any later version. // // Hangfire is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with Hangfire. If not, see . /// /// Helper class that provides common values for the cron expressions. /// public static class Cron { /// /// Returns cron expression that fires every minute. /// public static string Minutely() { return "* * * * *"; } /// /// Returns cron expression that fires every hour at the first minute. /// public static string Hourly() { return Hourly(minute: 0); } /// /// Returns cron expression that fires every hour at the specified minute. /// /// The minute in which the schedule will be activated (0-59). public static string Hourly(int minute) { return $"0 {minute} 0/1 1/1 * ? *"; } /// /// Returns cron expression that fires every day at 00:00 UTC. /// public static string Daily() { return Daily(hour: 0); } /// /// Returns cron expression that fires every day at the first minute of /// the specified hour in UTC. /// /// The hour in which the schedule will be activated (0-23). public static string Daily(int hour) { return Daily(hour, minute: 0); } /// /// Returns cron expression that fires every day at the specified hour and minute /// in UTC. /// /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Daily(int hour, int minute) { return $"0 {minute} {hour} 1/1 * ? *"; } /// /// Returns cron expression that fires every week at Monday, 00:00 UTC. /// public static string Weekly() { return Weekly(DayOfWeek.Monday); } /// /// Returns cron expression that fires every week at 00:00 UTC of the specified /// day of the week. /// /// The day of week in which the schedule will be activated. public static string Weekly(DayOfWeek dayOfWeek) { return Weekly(dayOfWeek, hour: 0); } /// /// Returns cron expression that fires every week at the first minute /// of the specified day of week and hour in UTC. /// /// The day of week in which the schedule will be activated. /// The hour in which the schedule will be activated (0-23). public static string Weekly(DayOfWeek dayOfWeek, int hour) { return Weekly(dayOfWeek, hour, minute: 0); } /// /// Returns cron expression that fires every week at the specified day /// of week, hour and minute in UTC. /// /// The day of week in which the schedule will be activated. /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Weekly(DayOfWeek dayOfWeek, int hour, int minute) { return $"0 {minute} {hour} ? * {(int)dayOfWeek} *"; } /// /// Returns cron expression that fires every month at 00:00 UTC of the first /// day of month. /// public static string Monthly() { return Monthly(day: 1); } /// /// Returns cron expression that fires every month at 00:00 UTC of the specified /// day of month. /// /// The day of month in which the schedule will be activated (1-31). public static string Monthly(int day) { return Monthly(day, hour: 0); } /// /// Returns cron expression that fires every month at the first minute of the /// specified day of month and hour in UTC. /// /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). public static string Monthly(int day, int hour) { return Monthly(day, hour, minute: 0); } /// /// Returns cron expression that fires every month at the specified day of month, /// hour and minute in UTC. /// /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Monthly(int day, int hour, int minute) { return $"{minute} {hour} {day} * *"; } /// /// Returns cron expression that fires every year on Jan, 1st at 00:00 UTC. /// public static string Yearly() { return Yearly(month: 1); } /// /// Returns cron expression that fires every year in the first day at 00:00 UTC /// of the specified month. /// /// The month in which the schedule will be activated (1-12). public static string Yearly(int month) { return Yearly(month, day: 1); } /// /// Returns cron expression that fires every year at 00:00 UTC of the specified /// month and day of month. /// /// The month in which the schedule will be activated (1-12). /// The day of month in which the schedule will be activated (1-31). public static string Yearly(int month, int day) { return Yearly(month, day, hour: 0); } /// /// Returns cron expression that fires every year at the first minute of the /// specified month, day and hour in UTC. /// /// The month in which the schedule will be activated (1-12). /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). public static string Yearly(int month, int day, int hour) { return Yearly(month, day, hour, minute: 0); } /// /// Returns cron expression that fires every year at the specified month, day, /// hour and minute in UTC. /// /// The month in which the schedule will be activated (1-12). /// The day of month in which the schedule will be activated (1-31). /// The hour in which the schedule will be activated (0-23). /// The minute in which the schedule will be activated (0-59). public static string Yearly(int month, int day, int hour, int minute) { return $"{minute} {hour} {day} {month} *"; } /// /// Returns cron expression that fires every <> minutes. /// /// The number of minutes to wait between every activation. public static string MinuteInterval(int interval) { return $"0 0/{interval} * 1/1 * ? *"; } /// /// Returns cron expression that fires every <> hours. /// /// The number of hours to wait between every activation. public static string HourInterval(int interval) { return $"0 0 0/{interval} 1/1 * ? *"; } /// /// Returns cron expression that fires every <> days. /// /// The number of days to wait between every activation. public static string DayInterval(int interval) { return $"0 0 12 1/{interval} * ? *"; } /// /// Returns cron expression that fires every <> months. /// /// The number of months to wait between every activation. public static string MonthInterval(int interval) { return $"0 0 1 */{interval} *"; } } // // Summary: // Specifies the day of the week. public enum DayOfWeek { // // Summary: // Indicates Sunday. Sunday = 1, // // Summary: // Indicates Monday. Monday = 2, // // Summary: // Indicates Tuesday. Tuesday = 3, // // Summary: // Indicates Wednesday. Wednesday = 4, // // Summary: // Indicates Thursday. Thursday = 5, // // Summary: // Indicates Friday. Friday = 6, // // Summary: // Indicates Saturday. Saturday = 7 } }