Skip to content

Instantly share code, notes, and snippets.

@kejadlen
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kejadlen/9477376 to your computer and use it in GitHub Desktop.
Save kejadlen/9477376 to your computer and use it in GitHub Desktop.
type BufferedReader struct {
reader io.Reader
Buffer []byte
}
func NewBufferedReader(reader io.Reader) *BufferedReader {
return &BufferedReader{reader, make([]byte, 0)}
}
func (br *BufferedReader) Read(p []byte) (int, error) {
n, err := br.reader.Read(p)
if err == nil {
br.Buffer = append(br.Buffer, p...)
}
return n, err
}
func (br *BufferedReader) Flush() {
br.Buffer = make([]byte, 0)
}
var lastEntry bytes.Buffer
tr := io.TeeReader(resp.Body, &lastEntry)
dec := xml.NewDecoder(tr)
if dec == nil {
log.Fatal("Couldn't create Decoder")
}
for {
switch elem := t.(type) {
case xml.StartElement:
if elem.Name.Local != "entry" {
continue
}
var entry Entry
err := dec.DecodeElement(&entry, &elem)
if err != nil {
raw := make([]byte, lastEntry.Len())
lastEntry.Read(raw)
log.Printf("Unable to decode XML (%s) with input:\n%s", err, elem)
continue
} else {
lastEntry.Reset()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment