| 93 | } |
| 94 | |
| 95 | func (df *DirFetcher) Fetch(ctx context.Context, r Ref) (file io.ReadCloser, size uint32, err error) { |
| 96 | fileName := fmt.Sprintf("%s/%s.%s", df.directory, r.String(), df.extension) |
| 97 | var stat os.FileInfo |
| 98 | stat, err = os.Stat(fileName) |
| 99 | if err != nil { |
| 100 | return |
| 101 | } |
| 102 | if stat.Size() > math.MaxUint32 { |
| 103 | err = errors.New("file size too big") |
| 104 | return |
| 105 | } |
| 106 | file, err = os.Open(fileName) |
| 107 | if err != nil { |
| 108 | return |
| 109 | } |
| 110 | size = uint32(stat.Size()) |
| 111 | return |
| 112 | } |
| 113 | |
| 114 | // ReaderAt returns an io.ReaderAt of br, fetching against sf. |
| 115 | // The context is stored in and used by the returned ReaderAt. |