@@ -14,12 +14,12 @@ import (
14
14
"net/http"
15
15
"time"
16
16
17
- "golang.org/x/net/webdav/internal/xml"
17
+ ixml "golang.org/x/net/webdav/internal/xml"
18
18
)
19
19
20
20
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_lockinfo
21
21
type lockInfo struct {
22
- XMLName xml .Name `xml:"lockinfo"`
22
+ XMLName ixml .Name `xml:"lockinfo"`
23
23
Exclusive * struct {} `xml:"lockscope>exclusive"`
24
24
Shared * struct {} `xml:"lockscope>shared"`
25
25
Write * struct {} `xml:"locktype>write"`
@@ -33,7 +33,7 @@ type owner struct {
33
33
34
34
func readLockInfo (r io.Reader ) (li lockInfo , status int , err error ) {
35
35
c := & countingReader {r : r }
36
- if err = xml .NewDecoder (c ).Decode (& li ); err != nil {
36
+ if err = ixml .NewDecoder (c ).Decode (& li ); err != nil {
37
37
if err == io .EOF {
38
38
if c .n == 0 {
39
39
// An empty body means to refresh the lock.
@@ -88,7 +88,7 @@ func escape(s string) string {
88
88
switch s [i ] {
89
89
case '"' , '&' , '\'' , '<' , '>' :
90
90
b := bytes .NewBuffer (nil )
91
- xml .EscapeText (b , []byte (s ))
91
+ ixml .EscapeText (b , []byte (s ))
92
92
return b .String ()
93
93
}
94
94
}
@@ -100,14 +100,14 @@ func escape(s string) string {
100
100
// and directives.
101
101
// http://www.webdav.org/specs/rfc4918.html#property_values
102
102
// http://www.webdav.org/specs/rfc4918.html#xml-extensibility
103
- func next (d * xml .Decoder ) (xml .Token , error ) {
103
+ func next (d * ixml .Decoder ) (ixml .Token , error ) {
104
104
for {
105
105
t , err := d .Token ()
106
106
if err != nil {
107
107
return t , err
108
108
}
109
109
switch t .(type ) {
110
- case xml .Comment , xml .Directive , xml .ProcInst :
110
+ case ixml .Comment , ixml .Directive , ixml .ProcInst :
111
111
continue
112
112
default :
113
113
return t , nil
@@ -116,31 +116,31 @@ func next(d *xml.Decoder) (xml.Token, error) {
116
116
}
117
117
118
118
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_prop (for propfind)
119
- type propfindProps []xml .Name
119
+ type propfindProps []ixml .Name
120
120
121
121
// UnmarshalXML appends the property names enclosed within start to pn.
122
122
//
123
123
// It returns an error if start does not contain any properties or if
124
124
// properties contain values. Character data between properties is ignored.
125
- func (pn * propfindProps ) UnmarshalXML (d * xml .Decoder , start xml .StartElement ) error {
125
+ func (pn * propfindProps ) UnmarshalXML (d * ixml .Decoder , start ixml .StartElement ) error {
126
126
for {
127
127
t , err := next (d )
128
128
if err != nil {
129
129
return err
130
130
}
131
131
switch t .(type ) {
132
- case xml .EndElement :
132
+ case ixml .EndElement :
133
133
if len (* pn ) == 0 {
134
134
return fmt .Errorf ("%s must not be empty" , start .Name .Local )
135
135
}
136
136
return nil
137
- case xml .StartElement :
138
- name := t .(xml .StartElement ).Name
137
+ case ixml .StartElement :
138
+ name := t .(ixml .StartElement ).Name
139
139
t , err = next (d )
140
140
if err != nil {
141
141
return err
142
142
}
143
- if _ , ok := t .(xml .EndElement ); ! ok {
143
+ if _ , ok := t .(ixml .EndElement ); ! ok {
144
144
return fmt .Errorf ("unexpected token %T" , t )
145
145
}
146
146
* pn = append (* pn , name )
@@ -150,7 +150,7 @@ func (pn *propfindProps) UnmarshalXML(d *xml.Decoder, start xml.StartElement) er
150
150
151
151
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propfind
152
152
type propfind struct {
153
- XMLName xml .Name `xml:"DAV: propfind"`
153
+ XMLName ixml .Name `xml:"DAV: propfind"`
154
154
Allprop * struct {} `xml:"DAV: allprop"`
155
155
Propname * struct {} `xml:"DAV: propname"`
156
156
Prop propfindProps `xml:"DAV: prop"`
@@ -159,7 +159,7 @@ type propfind struct {
159
159
160
160
func readPropfind (r io.Reader ) (pf propfind , status int , err error ) {
161
161
c := countingReader {r : r }
162
- if err = xml .NewDecoder (& c ).Decode (& pf ); err != nil {
162
+ if err = ixml .NewDecoder (& c ).Decode (& pf ); err != nil {
163
163
if err == io .EOF {
164
164
if c .n == 0 {
165
165
// An empty body means to propfind allprop.
@@ -190,7 +190,7 @@ func readPropfind(r io.Reader) (pf propfind, status int, err error) {
190
190
// See http://www.webdav.org/specs/rfc4918.html#data.model.for.resource.properties
191
191
type Property struct {
192
192
// XMLName is the fully qualified name that identifies this property.
193
- XMLName xml .Name
193
+ XMLName ixml .Name
194
194
195
195
// Lang is an optional xml:lang attribute.
196
196
Lang string `xml:"xml:lang,attr,omitempty"`
@@ -209,8 +209,8 @@ type Property struct {
209
209
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_error
210
210
// See multistatusWriter for the "D:" namespace prefix.
211
211
type xmlError struct {
212
- XMLName xml .Name `xml:"D:error"`
213
- InnerXML []byte `xml:",innerxml"`
212
+ XMLName ixml .Name `xml:"D:error"`
213
+ InnerXML []byte `xml:",innerxml"`
214
214
}
215
215
216
216
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propstat
@@ -224,10 +224,10 @@ type propstat struct {
224
224
225
225
// MarshalXML prepends the "D:" namespace prefix on properties in the DAV: namespace
226
226
// before encoding. See multistatusWriter.
227
- func (ps propstat ) MarshalXML (e * xml .Encoder , start xml .StartElement ) error {
227
+ func (ps propstat ) MarshalXML (e * ixml .Encoder , start ixml .StartElement ) error {
228
228
for k , prop := range ps .Prop {
229
229
if prop .XMLName .Space == "DAV:" {
230
- prop .XMLName = xml .Name {Space : "" , Local : "D:" + prop .XMLName .Local }
230
+ prop .XMLName = ixml .Name {Space : "" , Local : "D:" + prop .XMLName .Local }
231
231
ps .Prop [k ] = prop
232
232
}
233
233
}
@@ -239,7 +239,7 @@ func (ps propstat) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
239
239
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_response
240
240
// See multistatusWriter for the "D:" namespace prefix.
241
241
type response struct {
242
- XMLName xml .Name `xml:"D:response"`
242
+ XMLName ixml .Name `xml:"D:response"`
243
243
Href []string `xml:"D:href"`
244
244
Propstat []propstat `xml:"D:propstat"`
245
245
Status string `xml:"D:status,omitempty"`
@@ -264,7 +264,7 @@ type multistatusWriter struct {
264
264
responseDescription string
265
265
266
266
w http.ResponseWriter
267
- enc * xml .Encoder
267
+ enc * ixml .Encoder
268
268
}
269
269
270
270
// Write validates and emits a DAV response as part of a multistatus response
@@ -308,14 +308,14 @@ func (w *multistatusWriter) writeHeader() error {
308
308
if err != nil {
309
309
return err
310
310
}
311
- w .enc = xml .NewEncoder (w .w )
312
- return w .enc .EncodeToken (xml .StartElement {
313
- Name : xml .Name {
311
+ w .enc = ixml .NewEncoder (w .w )
312
+ return w .enc .EncodeToken (ixml .StartElement {
313
+ Name : ixml .Name {
314
314
Space : "DAV:" ,
315
315
Local : "multistatus" ,
316
316
},
317
- Attr : []xml .Attr {{
318
- Name : xml .Name {Space : "xmlns" , Local : "D" },
317
+ Attr : []ixml .Attr {{
318
+ Name : ixml .Name {Space : "xmlns" , Local : "D" },
319
319
Value : "DAV:" ,
320
320
}},
321
321
})
@@ -329,17 +329,17 @@ func (w *multistatusWriter) close() error {
329
329
if w .enc == nil {
330
330
return nil
331
331
}
332
- var end []xml .Token
332
+ var end []ixml .Token
333
333
if w .responseDescription != "" {
334
- name := xml .Name {Space : "DAV:" , Local : "responsedescription" }
334
+ name := ixml .Name {Space : "DAV:" , Local : "responsedescription" }
335
335
end = append (end ,
336
- xml .StartElement {Name : name },
337
- xml .CharData (w .responseDescription ),
338
- xml .EndElement {Name : name },
336
+ ixml .StartElement {Name : name },
337
+ ixml .CharData (w .responseDescription ),
338
+ ixml .EndElement {Name : name },
339
339
)
340
340
}
341
- end = append (end , xml .EndElement {
342
- Name : xml .Name {Space : "DAV:" , Local : "multistatus" },
341
+ end = append (end , ixml .EndElement {
342
+ Name : ixml .Name {Space : "DAV:" , Local : "multistatus" },
343
343
})
344
344
for _ , t := range end {
345
345
err := w .enc .EncodeToken (t )
@@ -353,9 +353,9 @@ func (w *multistatusWriter) close() error {
353
353
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_prop (for proppatch)
354
354
type proppatchProps []Property
355
355
356
- var xmlLangName = xml .Name {Space : "http://www.w3.org/XML/1998/namespace" , Local : "lang" }
356
+ var xmlLangName = ixml .Name {Space : "http://www.w3.org/XML/1998/namespace" , Local : "lang" }
357
357
358
- func xmlLang (s xml .StartElement , d string ) string {
358
+ func xmlLang (s ixml .StartElement , d string ) string {
359
359
for _ , attr := range s .Attr {
360
360
if attr .Name == xmlLangName {
361
361
return attr .Value
@@ -366,19 +366,19 @@ func xmlLang(s xml.StartElement, d string) string {
366
366
367
367
type xmlValue []byte
368
368
369
- func (v * xmlValue ) UnmarshalXML (d * xml .Decoder , start xml .StartElement ) error {
369
+ func (v * xmlValue ) UnmarshalXML (d * ixml .Decoder , start ixml .StartElement ) error {
370
370
// The XML value of a property can be arbitrary, mixed-content XML.
371
371
// To make sure that the unmarshalled value contains all required
372
372
// namespaces, we encode all the property value XML tokens into a
373
373
// buffer. This forces the encoder to redeclare any used namespaces.
374
374
var b bytes.Buffer
375
- e := xml .NewEncoder (& b )
375
+ e := ixml .NewEncoder (& b )
376
376
for {
377
377
t , err := next (d )
378
378
if err != nil {
379
379
return err
380
380
}
381
- if e , ok := t .(xml .EndElement ); ok && e .Name == start .Name {
381
+ if e , ok := t .(ixml .EndElement ); ok && e .Name == start .Name {
382
382
break
383
383
}
384
384
if err = e .EncodeToken (t ); err != nil {
@@ -401,23 +401,23 @@ func (v *xmlValue) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
401
401
//
402
402
// UnmarshalXML returns an error if start does not contain any properties or if
403
403
// property values contain syntactically incorrect XML.
404
- func (ps * proppatchProps ) UnmarshalXML (d * xml .Decoder , start xml .StartElement ) error {
404
+ func (ps * proppatchProps ) UnmarshalXML (d * ixml .Decoder , start ixml .StartElement ) error {
405
405
lang := xmlLang (start , "" )
406
406
for {
407
407
t , err := next (d )
408
408
if err != nil {
409
409
return err
410
410
}
411
411
switch elem := t .(type ) {
412
- case xml .EndElement :
412
+ case ixml .EndElement :
413
413
if len (* ps ) == 0 {
414
414
return fmt .Errorf ("%s must not be empty" , start .Name .Local )
415
415
}
416
416
return nil
417
- case xml .StartElement :
417
+ case ixml .StartElement :
418
418
p := Property {
419
- XMLName : t .(xml .StartElement ).Name ,
420
- Lang : xmlLang (t .(xml .StartElement ), lang ),
419
+ XMLName : t .(ixml .StartElement ).Name ,
420
+ Lang : xmlLang (t .(ixml .StartElement ), lang ),
421
421
}
422
422
err = d .DecodeElement (((* xmlValue )(& p .InnerXML )), & elem )
423
423
if err != nil {
@@ -431,29 +431,29 @@ func (ps *proppatchProps) UnmarshalXML(d *xml.Decoder, start xml.StartElement) e
431
431
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_set
432
432
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_remove
433
433
type setRemove struct {
434
- XMLName xml .Name
434
+ XMLName ixml .Name
435
435
Lang string `xml:"xml:lang,attr,omitempty"`
436
436
Prop proppatchProps `xml:"DAV: prop"`
437
437
}
438
438
439
439
// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propertyupdate
440
440
type propertyupdate struct {
441
- XMLName xml .Name `xml:"DAV: propertyupdate"`
441
+ XMLName ixml .Name `xml:"DAV: propertyupdate"`
442
442
Lang string `xml:"xml:lang,attr,omitempty"`
443
443
SetRemove []setRemove `xml:",any"`
444
444
}
445
445
446
446
func readProppatch (r io.Reader ) (patches []Proppatch , status int , err error ) {
447
447
var pu propertyupdate
448
- if err = xml .NewDecoder (r ).Decode (& pu ); err != nil {
448
+ if err = ixml .NewDecoder (r ).Decode (& pu ); err != nil {
449
449
return nil , http .StatusBadRequest , err
450
450
}
451
451
for _ , op := range pu .SetRemove {
452
452
remove := false
453
453
switch op .XMLName {
454
- case xml .Name {Space : "DAV:" , Local : "set" }:
454
+ case ixml .Name {Space : "DAV:" , Local : "set" }:
455
455
// No-op.
456
- case xml .Name {Space : "DAV:" , Local : "remove" }:
456
+ case ixml .Name {Space : "DAV:" , Local : "remove" }:
457
457
for _ , p := range op .Prop {
458
458
if len (p .InnerXML ) > 0 {
459
459
return nil , http .StatusBadRequest , errInvalidProppatch
0 commit comments