]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/dav/DavDepth.java
First WebDav PROPFIND implementation server-side
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / dav / DavDepth.java
diff --git a/org.argeo.cms/src/org/argeo/cms/dav/DavDepth.java b/org.argeo.cms/src/org/argeo/cms/dav/DavDepth.java
new file mode 100644 (file)
index 0000000..3d235fd
--- /dev/null
@@ -0,0 +1,35 @@
+package org.argeo.cms.dav;
+
+import com.sun.net.httpserver.HttpExchange;
+
+public enum DavDepth {
+       DEPTH_0("0"), DEPTH_1("1"), DEPTH_INFINITY("infinity");
+
+       private final String value;
+
+       private DavDepth(String value) {
+               this.value = value;
+       }
+
+       @Override
+       public String toString() {
+               return getValue();
+       }
+
+       public String getValue() {
+               return value;
+       }
+
+       public static DavDepth fromHttpExchange(HttpExchange httpExchange) {
+               String value = httpExchange.getRequestHeaders().getFirst(DavHeader.DEPTH.getHeaderName());
+               if (value == null)
+                       return null;
+               DavDepth depth = switch (value) {
+               case "0" -> DEPTH_0;
+               case "1" -> DEPTH_1;
+               case "infinity" -> DEPTH_INFINITY;
+               default -> throw new IllegalArgumentException("Unexpected value: " + value);
+               };
+               return depth;
+       }
+}