Ejemplo n.º 1
0
 protected virtual string GetCalendarObjectUrl(string id, string uid)
 {
     if (string.IsNullOrEmpty(id))
     {
         return("/" + OBJECT_ROUTE.Replace("{uid}", Uri.EscapeDataString(uid)));
     }
     return("/" + CALENDAR_OBJECT_ROUTE.Replace("{id}", Uri.EscapeDataString(id)).Replace("{uid}", Uri.EscapeDataString(uid)));
 }
Ejemplo n.º 2
0
        public static void RegisterRoutes <T>(
            RouteCollection routes,
            string routePrefix              = "caldav",
            Boolean useCalendarPrefix       = true,
            bool disallowMakeCalendar       = false,
            bool requireAuthentication      = false,
            string basicAuthenticationRealm = null)
            where T : CalDavController
        {
            var caldavControllerType = typeof(T);

            var namespaces = new[] { caldavControllerType.Namespace };
            var controller = caldavControllerType.Name;

            if (caldavControllerType.Name.EndsWith("Controller", StringComparison.OrdinalIgnoreCase))
            {
                controller = caldavControllerType.Name.Substring(0, caldavControllerType.Name.Length - "controller".Length);
            }

            var defaults = new { controller, action = "index" };

            MapFirst(routes, "CalDav Root", string.Empty, new { controller, action = "PropFind" }, namespaces, new { httpMethod = new Method("PROPFIND") });
            MapFirst(routes, "CalDav", BASE = routePrefix, defaults, namespaces);
            MapFirst(
                routes,
                "CalDav User",
                USER_ROUTE = routePrefix + "/user/{id}/",
                new { controller, action = "userRoot" },
                namespaces);

            var calendarRoute = useCalendarPrefix ? "/calendar" : "";

            MapFirst(routes, "CalDav Calendar", CALENDAR_ROUTE = routePrefix + calendarRoute + "/{id}/", defaults, namespaces);
            //Added to support options called root of the caldav.

            MapFirst(
                routes,
                "CalDav Calendar options home",
                routePrefix + calendarRoute + "/",
                new { controller, action = "indexRoot" },
                namespaces
                );

            MapFirst(routes, "CalDav Object", OBJECT_ROUTE = routePrefix + "/{uid}.ics", defaults, namespaces);
            MapFirst(routes, "CalDav Calendar Object", CALENDAR_OBJECT_ROUTE = routePrefix + calendarRoute + "/{id}/{uid}.ics", defaults, namespaces);

            OBJECT_ROUTE          = OBJECT_ROUTE.TrimStart('/');
            CALENDAR_OBJECT_ROUTE = CALENDAR_OBJECT_ROUTE.TrimStart('/');

            rxObjectRoute = new Regex(routePrefix + calendarRoute + "(/(?<id>[^/]+))?/(?<uid>.+?).ics", RegexOptions.Compiled | RegexOptions.IgnoreCase);

            RequireAuthentication    = requireAuthentication;
            BasicAuthenticationRealm = basicAuthenticationRealm;
            DisallowMakeCalendar     = disallowMakeCalendar;
        }