Skip to content

Commit

Permalink
Move link file creation up to avoid bugs with file being truncated.
Browse files Browse the repository at this point in the history
  • Loading branch information
ziadoz committed Jan 21, 2020
1 parent d7ccf97 commit 8d1be68
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 16 deletions.
12 changes: 12 additions & 0 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"io/ioutil"
"log"
"os"
"path"
"strings"
"time"

Expand Down Expand Up @@ -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)
Expand Down
22 changes: 7 additions & 15 deletions pkg/saver/saver.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"os"
"path"
"strconv"
"strings"
"sync"

"golang.org/x/sync/errgroup"
Expand All @@ -19,6 +20,7 @@ type TweetSaver struct {
SaveJson bool
SaveMedia bool
SaveLinks bool
LinksFile *os.File
}

func (ts *TweetSaver) Save(tweets []twitter.Tweet) error {
Expand Down Expand Up @@ -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)
}
}

Expand Down Expand Up @@ -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
}
6 changes: 5 additions & 1 deletion pkg/saver/saver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down

0 comments on commit 8d1be68

Please sign in to comment.