Remove useless internal package.

This commit is contained in:
zicla 2019-04-25 16:59:21 +08:00
parent b076a43f30
commit ff91e2aa38
7 changed files with 48 additions and 48 deletions

View File

@ -9,7 +9,6 @@ package dav
import (
"bytes"
"encoding/xml"
"errors"
"fmt"
"io"
@ -32,7 +31,7 @@ import (
// In the long term, this package should use the standard library's version
// only, and the internal fork deleted, once
// https://github.com/golang/go/issues/13400 is resolved.
ixml "tank/rest/dav/internal/xml"
"tank/rest/dav/xml"
)
@ -71,7 +70,7 @@ var (
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_lockinfo
type LockInfo struct {
XMLName ixml.Name `xml:"lockinfo"`
XMLName xml.Name `xml:"lockinfo"`
Exclusive *struct{} `xml:"lockscope>exclusive"`
Shared *struct{} `xml:"lockscope>shared"`
Write *struct{} `xml:"locktype>write"`
@ -101,7 +100,7 @@ func escape(s string) string {
switch s[i] {
case '"', '&', '\'', '<', '>':
b := bytes.NewBuffer(nil)
ixml.EscapeText(b, []byte(s))
xml.EscapeText(b, []byte(s))
return b.String()
}
}
@ -113,14 +112,14 @@ func escape(s string) string {
// and directives.
// http://www.webdav.org/specs/rfc4918.html#property_values
// http://www.webdav.org/specs/rfc4918.html#xml-extensibility
func next(d *ixml.Decoder) (ixml.Token, error) {
func next(d *xml.Decoder) (xml.Token, error) {
for {
t, err := d.Token()
if err != nil {
return t, err
}
switch t.(type) {
case ixml.Comment, ixml.Directive, ixml.ProcInst:
case xml.Comment, xml.Directive, xml.ProcInst:
continue
default:
return t, nil
@ -135,25 +134,25 @@ type PropfindProps []xml.Name
//
// It returns an error if start does not contain any properties or if
// properties contain values. Character data between properties is ignored.
func (pn *PropfindProps) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement) error {
func (pn *PropfindProps) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
for {
t, err := next(d)
if err != nil {
return err
}
switch t.(type) {
case ixml.EndElement:
case xml.EndElement:
if len(*pn) == 0 {
return fmt.Errorf("%s must not be empty", start.Name.Local)
}
return nil
case ixml.StartElement:
name := t.(ixml.StartElement).Name
case xml.StartElement:
name := t.(xml.StartElement).Name
t, err = next(d)
if err != nil {
return err
}
if _, ok := t.(ixml.EndElement); !ok {
if _, ok := t.(xml.EndElement); !ok {
return fmt.Errorf("unexpected token %T", t)
}
*pn = append(*pn, xml.Name(name))
@ -164,7 +163,7 @@ func (pn *PropfindProps) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement)
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propfind
// <!ELEMENT propfind ( propname | (allprop, include?) | prop ) >
type Propfind struct {
XMLName ixml.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"`
@ -174,7 +173,7 @@ type Propfind struct {
//从request中读出需要的属性。比如getcontentlength 大小 creationdate 创建时间
func ReadPropfind(reader io.Reader) (propfind Propfind, status int, err error) {
c := CountingReader{reader: reader}
if err = ixml.NewDecoder(&c).Decode(&propfind); err != nil {
if err = xml.NewDecoder(&c).Decode(&propfind); err != nil {
if err == io.EOF {
if c.n == 0 {
// An empty body means to propfind allprop.
@ -221,10 +220,10 @@ type Property struct {
InnerXML []byte `xml:",innerxml"`
}
// ixmlProperty is the same as the Property type except it holds an ixml.Name
// ixmlProperty is the same as the Property type except it holds an xml.Name
// instead of an xml.Name.
type IxmlProperty struct {
XMLName ixml.Name
XMLName xml.Name
Lang string `xml:"xml:lang,attr,omitempty"`
InnerXML []byte `xml:",innerxml"`
}
@ -232,7 +231,7 @@ type IxmlProperty struct {
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_error
// See MultiStatusWriter for the "D:" namespace prefix.
type XmlError struct {
XMLName ixml.Name `xml:"D:error"`
XMLName xml.Name `xml:"D:error"`
InnerXML []byte `xml:",innerxml"`
}
@ -245,7 +244,7 @@ type SubPropstat struct {
ResponseDescription string `xml:"D:responsedescription,omitempty"`
}
// ixmlPropstat is the same as the propstat type except it holds an ixml.Name
// ixmlPropstat is the same as the propstat type except it holds an xml.Name
// instead of an xml.Name.
type IxmlPropstat struct {
Prop []IxmlProperty `xml:"D:prop>_ignored_"`
@ -256,7 +255,7 @@ type IxmlPropstat struct {
// MarshalXML prepends the "D:" namespace prefix on properties in the DAV: namespace
// before encoding. See MultiStatusWriter.
func (ps SubPropstat) MarshalXML(e *ixml.Encoder, start ixml.StartElement) error {
func (ps SubPropstat) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
// Convert from a propstat to an ixmlPropstat.
ixmlPs := IxmlPropstat{
Prop: make([]IxmlProperty, len(ps.Prop)),
@ -266,7 +265,7 @@ func (ps SubPropstat) MarshalXML(e *ixml.Encoder, start ixml.StartElement) error
}
for k, prop := range ps.Prop {
ixmlPs.Prop[k] = IxmlProperty{
XMLName: ixml.Name(prop.XMLName),
XMLName: xml.Name(prop.XMLName),
Lang: prop.Lang,
InnerXML: prop.InnerXML,
}
@ -274,7 +273,7 @@ func (ps SubPropstat) MarshalXML(e *ixml.Encoder, start ixml.StartElement) error
for k, prop := range ixmlPs.Prop {
if prop.XMLName.Space == "DAV:" {
prop.XMLName = ixml.Name{Space: "", Local: "D:" + prop.XMLName.Local}
prop.XMLName = xml.Name{Space: "", Local: "D:" + prop.XMLName.Local}
ixmlPs.Prop[k] = prop
}
}
@ -286,7 +285,7 @@ func (ps SubPropstat) MarshalXML(e *ixml.Encoder, start ixml.StartElement) error
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_response
// See MultiStatusWriter for the "D:" namespace prefix.
type Response struct {
XMLName ixml.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"`
@ -311,7 +310,7 @@ type MultiStatusWriter struct {
ResponseDescription string
Writer http.ResponseWriter
Encoder *ixml.Encoder
Encoder *xml.Encoder
}
// Write validates and emits a DAV response as part of a multistatus response
@ -355,14 +354,14 @@ func (this *MultiStatusWriter) writeHeader() error {
if err != nil {
return err
}
this.Encoder = ixml.NewEncoder(this.Writer)
return this.Encoder.EncodeToken(ixml.StartElement{
Name: ixml.Name{
this.Encoder = xml.NewEncoder(this.Writer)
return this.Encoder.EncodeToken(xml.StartElement{
Name: xml.Name{
Space: "DAV:",
Local: "multistatus",
},
Attr: []ixml.Attr{{
Name: ixml.Name{Space: "xmlns", Local: "D"},
Attr: []xml.Attr{{
Name: xml.Name{Space: "xmlns", Local: "D"},
Value: "DAV:",
}},
})
@ -376,17 +375,17 @@ func (this *MultiStatusWriter) Close() error {
if this.Encoder == nil {
return nil
}
var end []ixml.Token
var end []xml.Token
if this.ResponseDescription != "" {
name := ixml.Name{Space: "DAV:", Local: "responsedescription"}
name := xml.Name{Space: "DAV:", Local: "responsedescription"}
end = append(end,
ixml.StartElement{Name: name},
ixml.CharData(this.ResponseDescription),
ixml.EndElement{Name: name},
xml.StartElement{Name: name},
xml.CharData(this.ResponseDescription),
xml.EndElement{Name: name},
)
}
end = append(end, ixml.EndElement{
Name: ixml.Name{Space: "DAV:", Local: "multistatus"},
end = append(end, xml.EndElement{
Name: xml.Name{Space: "DAV:", Local: "multistatus"},
})
for _, t := range end {
err := this.Encoder.EncodeToken(t)
@ -397,9 +396,9 @@ func (this *MultiStatusWriter) Close() error {
return this.Encoder.Flush()
}
var xmlLangName = ixml.Name{Space: "http://www.w3.org/XML/1998/namespace", Local: "lang"}
var xmlLangName = xml.Name{Space: "http://www.w3.org/XML/1998/namespace", Local: "lang"}
func xmlLang(s ixml.StartElement, d string) string {
func xmlLang(s xml.StartElement, d string) string {
for _, attr := range s.Attr {
if attr.Name == xmlLangName {
return attr.Value
@ -410,19 +409,19 @@ func xmlLang(s ixml.StartElement, d string) string {
type XmlValue []byte
func (v *XmlValue) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement) error {
func (v *XmlValue) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
// The XML value of a property can be arbitrary, mixed-content XML.
// To make sure that the unmarshalled value contains all required
// namespaces, we encode all the property value XML tokens into a
// buffer. This forces the encoder to redeclare any used namespaces.
var b bytes.Buffer
e := ixml.NewEncoder(&b)
e := xml.NewEncoder(&b)
for {
t, err := next(d)
if err != nil {
return err
}
if e, ok := t.(ixml.EndElement); ok && e.Name == start.Name {
if e, ok := t.(xml.EndElement); ok && e.Name == start.Name {
break
}
if err = e.EncodeToken(t); err != nil {
@ -448,7 +447,7 @@ type ProppatchProps []Property
//
// UnmarshalXML returns an error if start does not contain any properties or if
// property values contain syntactically incorrect XML.
func (ps *ProppatchProps) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement) error {
func (ps *ProppatchProps) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
lang := xmlLang(start, "")
for {
t, err := next(d)
@ -456,15 +455,15 @@ func (ps *ProppatchProps) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement)
return err
}
switch elem := t.(type) {
case ixml.EndElement:
case xml.EndElement:
if len(*ps) == 0 {
return fmt.Errorf("%s must not be empty", start.Name.Local)
}
return nil
case ixml.StartElement:
case xml.StartElement:
p := Property{
XMLName: xml.Name(t.(ixml.StartElement).Name),
Lang: xmlLang(t.(ixml.StartElement), lang),
XMLName: xml.Name(t.(xml.StartElement).Name),
Lang: xmlLang(t.(xml.StartElement), lang),
}
err = d.DecodeElement(((*XmlValue)(&p.InnerXML)), &elem)
if err != nil {
@ -478,14 +477,14 @@ func (ps *ProppatchProps) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement)
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_set
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_remove
type SetRemove struct {
XMLName ixml.Name
XMLName xml.Name
Lang string `xml:"xml:lang,attr,omitempty"`
Prop ProppatchProps `xml:"DAV: prop"`
}
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propertyupdate
type PropertyUpdate struct {
XMLName ixml.Name `xml:"DAV: propertyupdate"`
XMLName xml.Name `xml:"DAV: propertyupdate"`
Lang string `xml:"xml:lang,attr,omitempty"`
SetRemove []SetRemove `xml:",any"`
}

View File

@ -1,12 +1,12 @@
package rest
import (
"encoding/xml"
"fmt"
"net/http"
"path"
"strconv"
"tank/rest/dav"
"tank/rest/dav/xml"
)
//访问前缀,这个是特殊入口

View File

@ -1,13 +1,14 @@
package rest
import (
"encoding/xml"
"fmt"
"net/http"
"net/url"
"regexp"
"strings"
"tank/rest/dav"
"tank/rest/dav/xml"
)
/**