MCPcopy
hub / github.com/writefreely/writefreely / exportPostsZip

Function exportPostsZip

export.go:54–101  ·  view source on GitHub ↗
(u *User, posts *[]PublicPost)

Source from the content-addressed store, hash-verified

52}
53
54func exportPostsZip(u *User, posts *[]PublicPost) []byte {
55 // Create a buffer to write our archive to.
56 b := new(bytes.Buffer)
57
58 // Create a new zip archive.
59 w := zip.NewWriter(b)
60
61 // Add some files to the archive.
62 var filename string
63 files := []exportedTxt{}
64 for _, p := range *posts {
65 filename = ""
66 if p.Collection != nil {
67 filename += p.Collection.Alias + "/"
68 }
69 if p.Slug.String != "" {
70 filename += p.Slug.String + "_"
71 }
72 filename += p.ID + ".txt"
73 files = append(files, exportedTxt{filename, p.Title.String, p.Content, p.Created})
74 }
75
76 for _, file := range files {
77 head := &zip.FileHeader{Name: file.Name}
78 head.SetModTime(file.Mod)
79 f, err := w.CreateHeader(head)
80 if err != nil {
81 log.Error("export zip header: %v", err)
82 }
83 var fullPost string
84 if file.Title != "" {
85 fullPost = "# " + file.Title + "\n\n"
86 }
87 fullPost += file.Body
88 _, err = f.Write([]byte(fullPost))
89 if err != nil {
90 log.Error("export zip write: %v", err)
91 }
92 }
93
94 // Make sure to check the error on Close.
95 err := w.Close()
96 if err != nil {
97 log.Error("export zip close: %v", err)
98 }
99
100 return b.Bytes()
101}
102
103func compileFullExport(app *App, u *User) *ExportUser {
104 exportUser := &ExportUser{

Callers 1

viewExportPostsFunction · 0.85

Calls 1

CloseMethod · 0.80

Tested by

no test coverage detected