diff --git a/cmd/main.go b/cmd/main.go index 9f25f4b..664a09e 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -7,6 +7,7 @@ import ( "io/ioutil" "log" "os" + "path" "strings" "time" @@ -98,11 +99,22 @@ func run() { logger = ioutil.Discard } + var linksFile *os.File + if saveLinks { + linksFile, err = os.Create(path.Join(saveDir.Path, "links.txt")) + if err != nil { + log.Fatalf("could not create links file: %s", err) + } + defer linksFile.Close() + fmt.Printf("%+v\n", linksFile) + } + saver := &saver.TweetSaver{ SaveDir: saveDir.Path, SaveJson: saveJson, SaveMedia: saveMedia, SaveLinks: saveLinks, + LinksFile: linksFile, } client := getTwitterClient(consumerKey, consumerSecret, accessToken, accessTokenSecret) diff --git a/pkg/saver/saver.go b/pkg/saver/saver.go index fca32da..be0d7c9 100644 --- a/pkg/saver/saver.go +++ b/pkg/saver/saver.go @@ -7,6 +7,7 @@ import ( "os" "path" "strconv" + "strings" "sync" "golang.org/x/sync/errgroup" @@ -19,6 +20,7 @@ type TweetSaver struct { SaveJson bool SaveMedia bool SaveLinks bool + LinksFile *os.File } func (ts *TweetSaver) Save(tweets []twitter.Tweet) error { @@ -71,14 +73,13 @@ func (ts *TweetSaver) Save(tweets []twitter.Tweet) error { close(links) }() - file, err := makeLinks(path.Join(ts.SaveDir, "links.txt")) - if err != nil { - return err + var sb strings.Builder + for link := range links { + sb.WriteString(link + "\n") } - defer file.Close() - for link := range links { - file.WriteString(link + "\n") + if _, err := ts.LinksFile.WriteString(sb.String()); err != nil { + return fmt.Errorf("could not save links: %s", err) } } @@ -139,12 +140,3 @@ func makeDir(dest string) error { return nil } - -func makeLinks(dest string) (*os.File, error) { - file, err := os.OpenFile(dest, os.O_CREATE|os.O_APPEND|os.O_TRUNC|os.O_WRONLY, 0744) - if err != nil { - return nil, fmt.Errorf("could not create links file: %s", err) - } - - return file, nil -} diff --git a/pkg/saver/saver_test.go b/pkg/saver/saver_test.go index d2414a3..2b0c5b6 100644 --- a/pkg/saver/saver_test.go +++ b/pkg/saver/saver_test.go @@ -109,12 +109,16 @@ func TestTweetSaverSaveLinks(t *testing.T) { }, } + file, err := os.OpenFile("./output/links.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0744) + is.NoErr(err) + saver := TweetSaver{ SaveDir: "./output", SaveLinks: true, + LinksFile: file, } - err := saver.Save([]twitter.Tweet{tweet}) + err = saver.Save([]twitter.Tweet{tweet}) is.NoErr(err) fbytes, _ := ioutil.ReadFile("./fixtures/links.txt")