package xml import ( "encoding/xml" "io" "sync" ) const awsDefaultNamespace = "http://s3.amazonaws.com/doc/2006-03-01/" type DecoderProvider struct { mu sync.RWMutex defaultXMLNSForCompleteMultipart bool } func NewDecoderProvider(defaultNamespace bool) *DecoderProvider { return &DecoderProvider{ defaultXMLNSForCompleteMultipart: defaultNamespace, } } func (d *DecoderProvider) NewCompleteMultipartDecoder(r io.Reader) *xml.Decoder { dec := xml.NewDecoder(r) d.mu.RLock() if d.defaultXMLNSForCompleteMultipart { dec.DefaultSpace = awsDefaultNamespace } d.mu.RUnlock() return dec } func (d *DecoderProvider) UseDefaultNamespaceForCompleteMultipart(useDefaultNamespace bool) { d.mu.Lock() d.defaultXMLNSForCompleteMultipart = useDefaultNamespace d.mu.Unlock() }