From 16749d1fa183aec1e84b9c8db3efd477bd734449 Mon Sep 17 00:00:00 2001 From: zicla Date: Fri, 26 Apr 2019 03:11:15 +0800 Subject: [PATCH] Move dav to tool dir. --- code/dav_model.go | 10 ++++---- code/dav_service.go | 40 ++++++++++++++--------------- code/test/dav_test.go | 22 ++++++++-------- code/{ => tool}/dav/prop.go | 12 ++++----- code/{ => tool}/dav/xml/marshal.go | 0 code/{ => tool}/dav/xml/read.go | 0 code/{ => tool}/dav/xml/typeinfo.go | 0 code/{ => tool}/dav/xml/xml.go | 0 8 files changed, 42 insertions(+), 42 deletions(-) rename code/{ => tool}/dav/prop.go (98%) rename code/{ => tool}/dav/xml/marshal.go (100%) rename code/{ => tool}/dav/xml/read.go (100%) rename code/{ => tool}/dav/xml/typeinfo.go (100%) rename code/{ => tool}/dav/xml/xml.go (100%) diff --git a/code/dav_model.go b/code/dav_model.go index 05a6c70..bf0e43a 100644 --- a/code/dav_model.go +++ b/code/dav_model.go @@ -5,8 +5,8 @@ import ( "net/http" "path" "strconv" - "tank/code/dav" - "tank/code/dav/xml" + dav2 "tank/code/tool/dav" + xml2 "tank/code/tool/dav/xml" ) //访问前缀,这个是特殊入口 @@ -19,7 +19,7 @@ type LiveProp struct { } //所有的动态属性定义及其值的获取方式 -var LivePropMap = map[xml.Name]LiveProp{ +var LivePropMap = map[xml2.Name]LiveProp{ {Space: "DAV:", Local: "resourcetype"}: { findFn: func(user *User, matter *Matter) string { if matter.Dir { @@ -35,7 +35,7 @@ var LivePropMap = map[xml.Name]LiveProp{ if path.Clean("/"+matter.Name) == "/" { return "" } else { - return dav.EscapeXML(matter.Name) + return dav2.EscapeXML(matter.Name) } }, dir: true, @@ -72,7 +72,7 @@ var LivePropMap = map[xml.Name]LiveProp{ if matter.Dir { return "" } else { - return dav.EscapeXML(matter.Name) + return dav2.EscapeXML(matter.Name) } }, dir: false, diff --git a/code/dav_service.go b/code/dav_service.go index e64d04e..078873c 100644 --- a/code/dav_service.go +++ b/code/dav_service.go @@ -7,9 +7,9 @@ import ( "path" "regexp" "strings" - "tank/code/dav" - "tank/code/dav/xml" "tank/code/result" + dav2 "tank/code/tool/dav" + xml2 "tank/code/tool/dav/xml" "tank/code/tool/util" ) @@ -63,18 +63,18 @@ func (this *DavService) ParseDepth(request *http.Request) int { return depth } -func (this *DavService) makePropstatResponse(href string, pstats []dav.Propstat) *dav.Response { - resp := dav.Response{ +func (this *DavService) makePropstatResponse(href string, pstats []dav2.Propstat) *dav2.Response { + resp := dav2.Response{ Href: []string{(&url.URL{Path: href}).EscapedPath()}, - Propstat: make([]dav.SubPropstat, 0, len(pstats)), + Propstat: make([]dav2.SubPropstat, 0, len(pstats)), } for _, p := range pstats { - var xmlErr *dav.XmlError + var xmlErr *dav2.XmlError if p.XMLError != "" { - xmlErr = &dav.XmlError{InnerXML: []byte(p.XMLError)} + xmlErr = &dav2.XmlError{InnerXML: []byte(p.XMLError)} } - resp.Propstat = append(resp.Propstat, dav.SubPropstat{ - Status: fmt.Sprintf("HTTP/1.1 %d %s", p.Status, dav.StatusText(p.Status)), + resp.Propstat = append(resp.Propstat, dav2.SubPropstat{ + Status: fmt.Sprintf("HTTP/1.1 %d %s", p.Status, dav2.StatusText(p.Status)), Prop: p.Props, ResponseDescription: p.ResponseDescription, Error: xmlErr, @@ -84,11 +84,11 @@ func (this *DavService) makePropstatResponse(href string, pstats []dav.Propstat) } //从一个matter中获取其 []dav.Propstat -func (this *DavService) PropstatsFromXmlNames(user *User, matter *Matter, xmlNames []xml.Name) []dav.Propstat { +func (this *DavService) PropstatsFromXmlNames(user *User, matter *Matter, xmlNames []xml2.Name) []dav2.Propstat { - propstats := make([]dav.Propstat, 0) + propstats := make([]dav2.Propstat, 0) - var properties []dav.Property + var properties []dav2.Property for _, xmlName := range xmlNames { //TODO: deadprops尚未考虑 @@ -97,7 +97,7 @@ func (this *DavService) PropstatsFromXmlNames(user *User, matter *Matter, xmlNam if liveProp := LivePropMap[xmlName]; liveProp.findFn != nil && (liveProp.dir || !matter.Dir) { innerXML := liveProp.findFn(user, matter) - properties = append(properties, dav.Property{ + properties = append(properties, dav2.Property{ XMLName: xmlName, InnerXML: []byte(innerXML), }) @@ -110,7 +110,7 @@ func (this *DavService) PropstatsFromXmlNames(user *User, matter *Matter, xmlNam panic(result.BadRequest("请求的属性项无法解析!")) } - okPropstat := dav.Propstat{Status: http.StatusOK, Props: properties} + okPropstat := dav2.Propstat{Status: http.StatusOK, Props: properties} propstats = append(propstats, okPropstat) @@ -119,9 +119,9 @@ func (this *DavService) PropstatsFromXmlNames(user *User, matter *Matter, xmlNam } //从一个matter中获取所有的propsNames -func (this *DavService) AllPropXmlNames(matter *Matter) []xml.Name { +func (this *DavService) AllPropXmlNames(matter *Matter) []xml2.Name { - pnames := make([]xml.Name, 0) + pnames := make([]xml2.Name, 0) for pn, prop := range LivePropMap { if prop.findFn != nil && (prop.dir || !matter.Dir) { pnames = append(pnames, pn) @@ -132,9 +132,9 @@ func (this *DavService) AllPropXmlNames(matter *Matter) []xml.Name { } //从一个matter中获取其 []dav.Propstat -func (this *DavService) Propstats(user *User, matter *Matter, propfind *dav.Propfind) []dav.Propstat { +func (this *DavService) Propstats(user *User, matter *Matter, propfind *dav2.Propfind) []dav2.Propstat { - propstats := make([]dav.Propstat, 0) + propstats := make([]dav2.Propstat, 0) if propfind.Propname != nil { panic(result.BadRequest("propfind.Propname != nil 尚未处理")) } else if propfind.Allprop != nil { @@ -161,7 +161,7 @@ func (this *DavService) HandlePropfind(writer http.ResponseWriter, request *http depth := this.ParseDepth(request) //读取请求参数。按照用户的参数请求返回内容。 - propfind := dav.ReadPropfind(request.Body) + propfind := dav2.ReadPropfind(request.Body) //寻找符合条件的matter. //如果是空或者/就是请求根目录 @@ -179,7 +179,7 @@ func (this *DavService) HandlePropfind(writer http.ResponseWriter, request *http } //准备一个输出结果的Writer - multiStatusWriter := &dav.MultiStatusWriter{Writer: writer} + multiStatusWriter := &dav2.MultiStatusWriter{Writer: writer} for _, matter := range matters { diff --git a/code/test/dav_test.go b/code/test/dav_test.go index 83462ad..fd6b20f 100644 --- a/code/test/dav_test.go +++ b/code/test/dav_test.go @@ -2,15 +2,15 @@ package test import ( "bytes" - "tank/code/dav" - "tank/code/dav/xml" + dav2 "tank/code/tool/dav" + xml2 "tank/code/tool/dav/xml" "testing" "time" ) func TestXmlDecoder(t *testing.T) { - propfind := &dav.Propfind{} + propfind := &dav2.Propfind{} str := ` @@ -26,7 +26,7 @@ func TestXmlDecoder(t *testing.T) { reader := bytes.NewReader([]byte(str)) - err := xml.NewDecoder(reader).Decode(propfind) + err := xml2.NewDecoder(reader).Decode(propfind) if err != nil { t.Error(err.Error()) } @@ -58,18 +58,18 @@ func TestXmlEncoder(t *testing.T) { writer := &bytes.Buffer{} - response := &dav.Response{ - XMLName: xml.Name{Space: "DAV:", Local: "response"}, + response := &dav2.Response{ + XMLName: xml2.Name{Space: "DAV:", Local: "response"}, Href: []string{"/api/dav"}, - Propstat: []dav.SubPropstat{ + Propstat: []dav2.SubPropstat{ { - Prop: []dav.Property{ + Prop: []dav2.Property{ { - XMLName: xml.Name{Space: "DAV:", Local: "resourcetype"}, + XMLName: xml2.Name{Space: "DAV:", Local: "resourcetype"}, InnerXML: []byte(``), }, { - XMLName: xml.Name{Space: "DAV:", Local: "getlastmodified"}, + XMLName: xml2.Name{Space: "DAV:", Local: "getlastmodified"}, InnerXML: []byte(`Mon, 22 Apr 2019 06:38:36 GMT`), }, }, @@ -78,7 +78,7 @@ func TestXmlEncoder(t *testing.T) { }, } - err := xml.NewEncoder(writer).Encode(response) + err := xml2.NewEncoder(writer).Encode(response) if err != nil { t.Error(err.Error()) diff --git a/code/dav/prop.go b/code/tool/dav/prop.go similarity index 98% rename from code/dav/prop.go rename to code/tool/dav/prop.go index 536e9d9..75b1bd7 100644 --- a/code/dav/prop.go +++ b/code/tool/dav/prop.go @@ -10,8 +10,8 @@ import ( "fmt" "io" "net/http" - "tank/code/dav/xml" "tank/code/result" + "tank/code/tool/dav/xml" ) // Proppatch describes a property update instruction as defined in RFC 4918. @@ -135,7 +135,7 @@ var ( // http://www.webdav.org/specs/rfc4918.html#ELEMENT_lockinfo type LockInfo struct { - XMLName xml.Name `xml:"lockinfo"` + XMLName xml.Name `xml:"lockinfo"` Exclusive *struct{} `xml:"lockscope>exclusive"` Shared *struct{} `xml:"lockscope>shared"` Write *struct{} `xml:"locktype>write"` @@ -217,7 +217,7 @@ func (pn *PropfindProps) UnmarshalXML(d *xml.Decoder, start xml.StartElement) er // http://www.webdav.org/specs/rfc4918.html#ELEMENT_propfind // type Propfind struct { - XMLName xml.Name `xml:"DAV: propfind"` + XMLName xml.Name `xml:"DAV: propfind"` Allprop *struct{} `xml:"DAV: allprop"` Propname *struct{} `xml:"DAV: propname"` Prop PropfindProps `xml:"DAV: prop"` @@ -290,7 +290,7 @@ type IxmlProperty struct { // See MultiStatusWriter for the "D:" namespace prefix. type XmlError struct { XMLName xml.Name `xml:"D:error"` - InnerXML []byte `xml:",innerxml"` + InnerXML []byte `xml:",innerxml"` } // http://www.webdav.org/specs/rfc4918.html#ELEMENT_propstat @@ -343,7 +343,7 @@ func (ps SubPropstat) MarshalXML(e *xml.Encoder, start xml.StartElement) error { // http://www.webdav.org/specs/rfc4918.html#ELEMENT_response // See MultiStatusWriter for the "D:" namespace prefix. type Response struct { - XMLName xml.Name `xml:"D:response"` + XMLName xml.Name `xml:"D:response"` Href []string `xml:"D:href"` Propstat []SubPropstat `xml:"D:propstat"` Status string `xml:"D:status,omitempty"` @@ -542,7 +542,7 @@ type SetRemove struct { // http://www.webdav.org/specs/rfc4918.html#ELEMENT_propertyupdate type PropertyUpdate struct { - XMLName xml.Name `xml:"DAV: propertyupdate"` + XMLName xml.Name `xml:"DAV: propertyupdate"` Lang string `xml:"xml:lang,attr,omitempty"` SetRemove []SetRemove `xml:",any"` } diff --git a/code/dav/xml/marshal.go b/code/tool/dav/xml/marshal.go similarity index 100% rename from code/dav/xml/marshal.go rename to code/tool/dav/xml/marshal.go diff --git a/code/dav/xml/read.go b/code/tool/dav/xml/read.go similarity index 100% rename from code/dav/xml/read.go rename to code/tool/dav/xml/read.go diff --git a/code/dav/xml/typeinfo.go b/code/tool/dav/xml/typeinfo.go similarity index 100% rename from code/dav/xml/typeinfo.go rename to code/tool/dav/xml/typeinfo.go diff --git a/code/dav/xml/xml.go b/code/tool/dav/xml/xml.go similarity index 100% rename from code/dav/xml/xml.go rename to code/tool/dav/xml/xml.go