unixfs: refactor switch in `precalcNextBuf`
Do not use `NewDagReader` just for the `RawNode` case. Treat invalid UnixFS types in the same case. License: MIT Signed-off-by: Lucas Molas <schomatis@gmail.com>
Lucas Molas committed
Jul 16, 2018 at 10:54 UTC
a1d207343aa1599f7caae663a243cd80b512a520
3 files changed
+7
-14
unixfs/io/dagreader.go
+2
-2
@@ -3,7 +3,6 @@ package io
3
import (
4
"context"
5
"errors"
6
- "fmt"
6
"io"
7
8
mdag "github.com/ipfs/go-ipfs/merkledag"
@@ -17,6 +16,7 @@ import (
16
var (
17
ErrIsDir = errors.New("this dag node is a directory")
18
ErrCantReadSymlinks = errors.New("cannot currently read symlinks")
19
+ ErrUnkownNodeType = errors.New("unknown node type")
20
)
21
22
// A DagReader provides read-only read and seek acess to a unixfs file.
@@ -74,6 +74,6 @@ func NewDagReader(ctx context.Context, n ipld.Node, serv ipld.NodeGetter) (DagRe
74
return nil, ft.ErrUnrecognizedType
75
}
76
default:
77
- return nil, fmt.Errorf("unrecognized node type")
77
+ return nil, ErrUnkownNodeType
78
}
79
}
unixfs/io/pbdagreader.go
+5
-11
@@ -106,26 +106,20 @@ func (dr *PBDagReader) precalcNextBuf(ctx context.Context) error {
106
}
107
108
switch fsNode.Type() {
109
- case ftpb.Data_Directory, ftpb.Data_HAMTShard:
110
- // A directory should not exist within a file
111
- return ft.ErrInvalidDirLocation
109
case ftpb.Data_File:
110
dr.buf = NewPBFileReader(dr.ctx, nxt, fsNode, dr.serv)
111
return nil
112
case ftpb.Data_Raw:
113
dr.buf = NewBufDagReader(fsNode.Data())
114
return nil
118
- case ftpb.Data_Metadata:
119
- return errors.New("shouldnt have had metadata object inside file")
120
- case ftpb.Data_Symlink:
121
- return errors.New("shouldnt have had symlink inside file")
115
default:
123
- return ft.ErrUnrecognizedType
116
+ return fmt.Errorf("found %s node in unexpected place", fsNode.Type().String())
117
}
118
+ case *mdag.RawNode:
119
+ dr.buf = NewBufDagReader(nxt.RawData())
120
+ return nil
121
default:
126
- var err error
127
- dr.buf, err = NewDagReader(ctx, nxt, dr.serv)
128
- return err
122
+ return ErrUnkownNodeType
123
}
124
}
125
unixfs/unixfs.go
-1
@@ -25,7 +25,6 @@ const (
25
// Common errors
26
var (
27
ErrMalformedFileFormat = errors.New("malformed data in file format")
28
- ErrInvalidDirLocation = errors.New("found directory node in unexpected place")
28
ErrUnrecognizedType = errors.New("unrecognized node type")
29
)
30