func parseManifestStream(s string) (m ManifestStream) { tokens := strings.Split(s, " ") m.StreamName = tokens[0] tokens = tokens[1:] var i int for i = range tokens { if !blockdigest.IsBlockLocator(tokens[i]) { break } } m.Blocks = tokens[:i] m.Files = tokens[i:] return }
func parseManifestStream(s string) (m ManifestStream) { tokens := strings.Split(s, " ") m.StreamName = UnescapeName(tokens[0]) if m.StreamName != "." && !strings.HasPrefix(m.StreamName, "./") { m.Err = fmt.Errorf("Invalid stream name: %s", m.StreamName) return } tokens = tokens[1:] var i int for i = 0; i < len(tokens); i++ { if !blockdigest.IsBlockLocator(tokens[i]) { break } } m.Blocks = tokens[:i] fileTokens := tokens[i:] if len(m.Blocks) == 0 { m.Err = fmt.Errorf("No block locators found") return } if len(fileTokens) == 0 { m.Err = fmt.Errorf("No file tokens found") return } for _, ft := range fileTokens { pft, err := parseFileStreamSegment(ft) if err != nil { m.Err = fmt.Errorf("Invalid file token: %s", ft) break } m.FileStreamSegments = append(m.FileStreamSegments, pft) } return }