MCPcopy
hub / github.com/valyala/fasthttp / readFileHeader

Function readFileHeader

fs.go:1940–1994  ·  view source on GitHub ↗
(f io.Reader, compressed bool, fileEncoding string)

Source from the content-addressed store, hash-verified

1938}
1939
1940func readFileHeader(f io.Reader, compressed bool, fileEncoding string) ([]byte, error) {
1941 r := f
1942 var (
1943 br *brotli.Reader
1944 zr *gzip.Reader
1945 zsr *zstd.Decoder
1946 )
1947 if compressed {
1948 var err error
1949 switch fileEncoding {
1950 case "br":
1951 if br, err = acquireBrotliReader(f); err != nil {
1952 return nil, err
1953 }
1954 r = br
1955 case "gzip":
1956 if zr, err = acquireGzipReader(f); err != nil {
1957 return nil, err
1958 }
1959 r = zr
1960 case "zstd":
1961 if zsr, err = acquireZstdReader(f); err != nil {
1962 return nil, err
1963 }
1964 r = zsr
1965 }
1966 }
1967
1968 lr := &io.LimitedReader{
1969 R: r,
1970 N: 512,
1971 }
1972 data, err := io.ReadAll(lr)
1973 seeker, ok := f.(io.Seeker)
1974 if !ok {
1975 return nil, errors.New("must implement io.Seeker")
1976 }
1977 if _, err := seeker.Seek(0, io.SeekStart); err != nil {
1978 return nil, err
1979 }
1980
1981 if br != nil {
1982 releaseBrotliReader(br)
1983 }
1984
1985 if zr != nil {
1986 releaseGzipReader(zr)
1987 }
1988
1989 if zsr != nil {
1990 releaseZstdReader(zsr)
1991 }
1992
1993 return data, err
1994}
1995
1996func stripLeadingSlashes(path []byte, stripSlashes int) []byte {
1997 for stripSlashes > 0 && len(path) > 0 {

Callers 2

newFSFileMethod · 0.85

Calls 6

acquireBrotliReaderFunction · 0.85
acquireGzipReaderFunction · 0.85
acquireZstdReaderFunction · 0.85
releaseBrotliReaderFunction · 0.85
releaseGzipReaderFunction · 0.85
releaseZstdReaderFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…