mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
fix feed sniff reader
This commit is contained in:
parent
a2bfd1682b
commit
e0e6166cdf
@ -44,8 +44,15 @@ func sniff(lookup string) (string, processor) {
|
|||||||
|
|
||||||
func Parse(r io.Reader) (*Feed, error) {
|
func Parse(r io.Reader) (*Feed, error) {
|
||||||
lookup := make([]byte, 1024)
|
lookup := make([]byte, 1024)
|
||||||
if _, err := r.Read(lookup); err != nil {
|
n, err := io.ReadFull(r, lookup)
|
||||||
return nil, fmt.Errorf("Failed to read input: %s", err)
|
switch {
|
||||||
|
case err != nil:
|
||||||
|
return nil, err
|
||||||
|
case err == io.ErrUnexpectedEOF:
|
||||||
|
lookup = lookup[:n]
|
||||||
|
r = bytes.NewReader(lookup)
|
||||||
|
default:
|
||||||
|
r = io.MultiReader(bytes.NewReader(lookup), r)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, callback := sniff(string(lookup))
|
_, callback := sniff(string(lookup))
|
||||||
@ -53,7 +60,7 @@ func Parse(r io.Reader) (*Feed, error) {
|
|||||||
return nil, UnknownFormat
|
return nil, UnknownFormat
|
||||||
}
|
}
|
||||||
|
|
||||||
feed, err := callback(io.MultiReader(bytes.NewReader(lookup), r))
|
feed, err := callback(r)
|
||||||
if feed != nil {
|
if feed != nil {
|
||||||
feed.cleanup()
|
feed.cleanup()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user