1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-08-06 19:44:01 +08:00

coreapi unixfs: fix Get seeking in gateway

License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
This commit is contained in:
Łukasz Magiera
2018-10-10 13:47:34 +02:00
parent 34b1313d82
commit 7915d26090
2 changed files with 13 additions and 7 deletions

View File

@ -147,6 +147,10 @@ func cat(ctx context.Context, api iface.CoreAPI, paths []string, offset int64, m
return nil, 0, err
}
if f.IsDirectory() {
return nil, 0, iface.ErrIsDir
}
file := f.(catFile)
fsize, err := file.Size()

View File

@ -179,11 +179,13 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr
}
dr, err := i.api.Unixfs().Get(ctx, resolvedPath)
dir := dr.IsDirectory()
switch err {
case nil:
// Cat() worked
defer dr.Close()
dir := false
switch {
case err == nil:
dir = dr.IsDirectory()
if !dir {
defer dr.Close()
}
default:
webError(w, "ipfs cat "+escapedURLPath, err, http.StatusNotFound)
return
@ -370,7 +372,7 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr
}
type sizeReadSeeker interface {
Size() uint64
Size() (int64, error)
io.ReadSeeker
}
@ -381,7 +383,7 @@ type sizeSeeker struct {
func (s *sizeSeeker) Seek(offset int64, whence int) (int64, error) {
if whence == io.SeekEnd && offset == 0 {
return int64(s.Size()), nil
return s.Size()
}
return s.sizeReadSeeker.Seek(offset, whence)