diff options
| author | siddharth <s@ricketyspace.net> | 2021-11-27 16:32:48 -0500 | 
|---|---|---|
| committer | siddharth <s@ricketyspace.net> | 2021-11-27 16:32:48 -0500 | 
| commit | f40528802fa5deba941a04746e70a81f72ccf280 (patch) | |
| tree | 8513377ecdc637fb89a134dd7718cd37b455a7e8 /feed | |
| parent | d33063ad277017e1ae6ac56cd93b3c27fcf15f9e (diff) | |
add feed package
Move feed type and function to its own package.
Diffstat (limited to 'feed')
| -rw-r--r-- | feed/feed.go | 55 | 
1 files changed, 55 insertions, 0 deletions
diff --git a/feed/feed.go b/feed/feed.go new file mode 100644 index 0000000..13de66d --- /dev/null +++ b/feed/feed.go @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: ISC +// Copyright © 2021 siddharth <s@ricketyspace.net> + +package feed + +import ( +	"fmt" +	"os" +	"path" +) + +type Feed struct { +	Id      string `json:"id"` +	Source  string `json:"source"` +	Schema  string `json:"schema"` +	DumpDir string +} + +func (feed *Feed) Validate(baseDumpDir string) error { +	_, err := os.Stat(baseDumpDir) +	if err != nil { +		return err +	} + +	// Check 'id' +	if len(feed.Id) == 0 { +		return fmt.Errorf("'id' not set in a feed") +	} + +	// Check 'source' +	if len(feed.Source) == 0 { +		return fmt.Errorf("'source' not set in a feed '%s'", feed.Id) +	} + +	// Check 'schema' +	schemaOK := false +	for _, schema := range []string{"npr", "youtube"} { +		if feed.Schema == schema { +			schemaOK = true +		} +	} +	if !schemaOK { +		return fmt.Errorf("schema '%s' for feed '%s' is not valid", +			feed.Schema, feed.Id) +	} + +	// Set dump directory for feed and ensure it exists. +	feed.DumpDir = path.Join(baseDumpDir, feed.Id) +	err = os.MkdirAll(feed.DumpDir, 0755) +	if err != nil { +		return err +	} + +	return nil +}  | 
