MCPcopy Create free account
hub / github.com/OpenListTeam/OpenList / ServeHTTP

Method ServeHTTP

server/webdav/webdav.go:54–105  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

52}
53
54func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
55 status, err := http.StatusBadRequest, errUnsupportedMethod
56 brw := newBufferedResponseWriter()
57 useBufferedWriter := true
58 if h.LockSystem == nil {
59 status, err = http.StatusInternalServerError, errNoLockSystem
60 } else {
61 switch r.Method {
62 case "OPTIONS":
63 status, err = h.handleOptions(brw, r)
64 case "GET", "HEAD", "POST":
65 useBufferedWriter = false
66 Writer := &common.WrittenResponseWriter{ResponseWriter: w}
67 status, err = h.handleGetHeadPost(Writer, r)
68 if status != 0 && Writer.IsWritten() {
69 status = 0
70 }
71 case "DELETE":
72 status, err = h.handleDelete(brw, r)
73 case "PUT":
74 status, err = h.handlePut(brw, r)
75 case "MKCOL":
76 status, err = h.handleMkcol(brw, r)
77 case "COPY", "MOVE":
78 status, err = h.handleCopyMove(brw, r)
79 case "LOCK":
80 status, err = h.handleLock(brw, r)
81 case "UNLOCK":
82 status, err = h.handleUnlock(brw, r)
83 case "PROPFIND":
84 status, err = h.handlePropfind(brw, r)
85 // if there is a error for PROPFIND, we should be as an empty folder to the client
86 if err != nil {
87 status = http.StatusNotFound
88 }
89 case "PROPPATCH":
90 status, err = h.handleProppatch(brw, r)
91 }
92 }
93
94 if status != 0 {
95 w.WriteHeader(status)
96 if status != http.StatusNoContent {
97 w.Write([]byte(StatusText(status)))
98 }
99 } else if useBufferedWriter {
100 brw.WriteToResponse(w)
101 }
102 if h.Logger != nil && err != nil {
103 h.Logger(r, err)
104 }
105}
106
107func (h *Handler) lock(now time.Time, root string) (token string, status int, err error) {
108 token, err = h.LockSystem.Create(now, LockDetails{

Calls 15

handleOptionsMethod · 0.95
handleGetHeadPostMethod · 0.95
IsWrittenMethod · 0.95
handleDeleteMethod · 0.95
handlePutMethod · 0.95
handleMkcolMethod · 0.95
handleCopyMoveMethod · 0.95
handleLockMethod · 0.95
handleUnlockMethod · 0.95
handlePropfindMethod · 0.95
handleProppatchMethod · 0.95