diff --git a/persistence/follows.go b/persistence/follows.go new file mode 100644 index 0000000..7a8647c --- /dev/null +++ b/persistence/follows.go @@ -0,0 +1,23 @@ +package persistence + +import ( + "offline_twitter/scraper" +) + + +/** + * Create a Type for this to make it easier to expand later + */ +type Follow struct { + Handle scraper.UserHandle `yaml:"user"` + AutoFetch bool `yaml:"auto_fetch_tweets"` +} + +func (p Profile) IsFollowing(handle scraper.UserHandle) bool { + for _, follow := range p.UsersList { + if follow.Handle == handle { + return true; + } + } + return false; +} diff --git a/persistence/follows_test.go b/persistence/follows_test.go new file mode 100644 index 0000000..b8b1695 --- /dev/null +++ b/persistence/follows_test.go @@ -0,0 +1,23 @@ +package persistence_test + +import ( + "testing" + + . "offline_twitter/persistence" +) + + +func TestIsFollowing(t *testing.T) { + p := Profile{} + p.UsersList = []Follow{ + Follow{Handle: "guy1"}, + Follow{Handle: "guy2"}, + } + + if p.IsFollowing("guy3") { + t.Errorf("Should not be following guy3") + } + if !p.IsFollowing("guy2") { + t.Errorf("Should be following guy2") + } +} diff --git a/persistence/media_download.go b/persistence/media_download.go index d55c075..79bf0ae 100644 --- a/persistence/media_download.go +++ b/persistence/media_download.go @@ -46,6 +46,7 @@ func (d DefaultDownloader) Curl(url string, outpath string) error { return nil } + /** * Downloads an Image, and if successful, marks it as downloaded in the DB */ @@ -146,11 +147,8 @@ func (p Profile) DownloadUserContentFor(u *scraper.User) error { * Enable injecting a custom MediaDownloader (i.e., for testing) */ func (p Profile) DownloadUserContentWithInjector(u *scraper.User, downloader MediaDownloader) error { - var err error - var outfile string - - outfile = path.Join(p.ProfileDir, "profile_images", u.ProfileImageLocalPath) - err = downloader.Curl(u.ProfileImageUrl, outfile) + outfile := path.Join(p.ProfileDir, "profile_images", u.ProfileImageLocalPath) + err := downloader.Curl(u.ProfileImageUrl, outfile) if err != nil { return err } diff --git a/persistence/profile.go b/persistence/profile.go index 6410d7e..d68ba4c 100644 --- a/persistence/profile.go +++ b/persistence/profile.go @@ -8,8 +8,6 @@ import ( "database/sql" _ "github.com/mattn/go-sqlite3" "gopkg.in/yaml.v2" - - "offline_twitter/scraper" ) //go:embed schema.sql @@ -17,16 +15,9 @@ var sql_init string type Settings struct {} -/** - * Create a Type for this to make it easier to expand later - */ -type UsersList []struct { - Handle scraper.UserHandle `yaml:"user"` -} - type Profile struct { ProfileDir string - UsersList UsersList + UsersList []Follow Settings Settings DB *sql.DB } @@ -139,7 +130,7 @@ func NewProfile(target_dir string) (Profile, error) { return Profile{}, err } - return Profile{target_dir, UsersList{}, settings, db}, nil + return Profile{target_dir, []Follow{}, settings, db}, nil } @@ -171,7 +162,7 @@ func LoadProfile(profile_dir string) (Profile, error) { if err != nil { return Profile{}, err } - users_list := UsersList{} + users_list := []Follow{} err = yaml.Unmarshal(users_data, &users_list); if err != nil { return Profile{}, err