mirror of https://github.com/Xhofe/alist
				
				
				
			
		
			
				
	
	
		
			35 lines
		
	
	
		
			912 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			912 B
		
	
	
	
		
			Go
		
	
	
package webdav
 | 
						|
 | 
						|
import (
 | 
						|
	log "github.com/sirupsen/logrus"
 | 
						|
	"net/http"
 | 
						|
	"strconv"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
func (h *Handler) getModTime(r *http.Request) time.Time {
 | 
						|
	return h.getHeaderTime(r, "X-OC-Mtime", "")
 | 
						|
}
 | 
						|
 | 
						|
// owncloud/ nextcloud haven't impl this, but we can add the support since rclone may support this soon.
 | 
						|
// try ModTime if CreateTime not found in header
 | 
						|
func (h *Handler) getCreateTime(r *http.Request) time.Time {
 | 
						|
	return h.getHeaderTime(r, "X-OC-Ctime", "X-OC-Mtime")
 | 
						|
}
 | 
						|
 | 
						|
func (h *Handler) getHeaderTime(r *http.Request, header, alternative string) time.Time {
 | 
						|
	hVal := r.Header.Get(header)
 | 
						|
	// try alternative
 | 
						|
	if hVal == "" && alternative != "" {
 | 
						|
		hVal = r.Header.Get(alternative)
 | 
						|
	}
 | 
						|
	if hVal != "" {
 | 
						|
		modTimeUnix, err := strconv.ParseInt(hVal, 10, 64)
 | 
						|
		if err == nil {
 | 
						|
			return time.Unix(modTimeUnix, 0)
 | 
						|
		}
 | 
						|
		log.Warnf("getModTime in Webdav, failed to parse %s, %s", header, err)
 | 
						|
	}
 | 
						|
	return time.Now()
 | 
						|
}
 |