Skip to content

Commit 40ae9cd

Browse files
committed
Minor formatting fixes
1 parent 709668d commit 40ae9cd

File tree

5 files changed

+73
-86
lines changed

5 files changed

+73
-86
lines changed

init.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ func initImporter(app *App) *subimporter.Importer {
186186
}
187187

188188
// initMessengers initializes various messaging backends.
189-
func initMessengers(r *manager.Manager) messenger.Messenger {
189+
func initMessengers(m *manager.Manager) messenger.Messenger {
190190
// Load SMTP configurations for the default e-mail Messenger.
191191
var (
192192
mapKeys = ko.MapKeys("smtp")
@@ -215,7 +215,7 @@ func initMessengers(r *manager.Manager) messenger.Messenger {
215215
if err != nil {
216216
lo.Fatalf("error loading e-mail messenger: %v", err)
217217
}
218-
if err := r.AddMessenger(msgr); err != nil {
218+
if err := m.AddMessenger(msgr); err != nil {
219219
lo.Printf("error registering messenger %s", err)
220220
}
221221

internal/manager/manager.go

Lines changed: 37 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ func (m *Manager) AddMessenger(msg messenger.Messenger) error {
122122
return fmt.Errorf("messenger '%s' is already loaded", id)
123123
}
124124
m.messengers[id] = msg
125-
126125
return nil
127126
}
128127

@@ -132,7 +131,6 @@ func (m *Manager) GetMessengerNames() []string {
132131
for n := range m.messengers {
133132
names = append(names, n)
134133
}
135-
136134
return names
137135
}
138136

@@ -196,9 +194,7 @@ func (m *Manager) Run(tick time.Duration) {
196194
delete(m.msgErrorCounts, e.camp.ID)
197195

198196
// Notify admins.
199-
m.sendNotif(e.camp,
200-
models.CampaignStatusPaused,
201-
"Too many errors")
197+
m.sendNotif(e.camp, models.CampaignStatusPaused, "Too many errors")
202198
}
203199
}
204200
}
@@ -256,6 +252,34 @@ func (m *Manager) SpawnWorkers() {
256252
}
257253
}
258254

255+
// TemplateFuncs returns the template functions to be applied into
256+
// compiled campaign templates.
257+
func (m *Manager) TemplateFuncs(c *models.Campaign) template.FuncMap {
258+
return template.FuncMap{
259+
"TrackLink": func(url string, msg *Message) string {
260+
return m.trackLink(url, msg.Campaign.UUID, msg.Subscriber.UUID)
261+
},
262+
"TrackView": func(msg *Message) template.HTML {
263+
return template.HTML(fmt.Sprintf(`<img src="%s" alt="" />`,
264+
fmt.Sprintf(m.cfg.ViewTrackURL, msg.Campaign.UUID, msg.Subscriber.UUID)))
265+
},
266+
"UnsubscribeURL": func(msg *Message) string {
267+
return msg.unsubURL
268+
},
269+
"OptinURL": func(msg *Message) string {
270+
// Add list IDs.
271+
// TODO: Show private lists list on optin e-mail
272+
return fmt.Sprintf(m.cfg.OptinURL, msg.Subscriber.UUID, "")
273+
},
274+
"Date": func(layout string) string {
275+
if layout == "" {
276+
layout = time.ANSIC
277+
}
278+
return time.Now().Format(layout)
279+
},
280+
}
281+
}
282+
259283
// addCampaign adds a campaign to the process queue.
260284
func (m *Manager) addCampaign(c *models.Campaign) error {
261285
// Validate messenger.
@@ -281,7 +305,6 @@ func (m *Manager) getPendingCampaignIDs() []int64 {
281305
for _, c := range m.camps {
282306
ids = append(ids, int64(c.ID))
283307
}
284-
285308
return ids
286309
}
287310

@@ -358,17 +381,6 @@ func (m *Manager) exhaustCampaign(c *models.Campaign, status string) (*models.Ca
358381
return cm, nil
359382
}
360383

361-
// Render takes a Message, executes its pre-compiled Campaign.Tpl
362-
// and applies the resultant bytes to Message.body to be used in messages.
363-
func (m *Message) Render() error {
364-
out := bytes.Buffer{}
365-
if err := m.Campaign.Tpl.ExecuteTemplate(&out, models.BaseTpl, m); err != nil {
366-
return err
367-
}
368-
m.Body = out.Bytes()
369-
return nil
370-
}
371-
372384
// trackLink register a URL and return its UUID to be used in message templates
373385
// for tracking links.
374386
func (m *Manager) trackLink(url, campUUID, subUUID string) string {
@@ -412,30 +424,13 @@ func (m *Manager) sendNotif(c *models.Campaign, status, reason string) error {
412424
return m.notifCB(subject, data)
413425
}
414426

415-
// TemplateFuncs returns the template functions to be applied into
416-
// compiled campaign templates.
417-
func (m *Manager) TemplateFuncs(c *models.Campaign) template.FuncMap {
418-
return template.FuncMap{
419-
"TrackLink": func(url string, msg *Message) string {
420-
return m.trackLink(url, msg.Campaign.UUID, msg.Subscriber.UUID)
421-
},
422-
"TrackView": func(msg *Message) template.HTML {
423-
return template.HTML(fmt.Sprintf(`<img src="%s" alt="" />`,
424-
fmt.Sprintf(m.cfg.ViewTrackURL, msg.Campaign.UUID, msg.Subscriber.UUID)))
425-
},
426-
"UnsubscribeURL": func(msg *Message) string {
427-
return msg.unsubURL
428-
},
429-
"OptinURL": func(msg *Message) string {
430-
// Add list IDs.
431-
// TODO: Show private lists list on optin e-mail
432-
return fmt.Sprintf(m.cfg.OptinURL, msg.Subscriber.UUID, "")
433-
},
434-
"Date": func(layout string) string {
435-
if layout == "" {
436-
layout = time.ANSIC
437-
}
438-
return time.Now().Format(layout)
439-
},
427+
// Render takes a Message, executes its pre-compiled Campaign.Tpl
428+
// and applies the resultant bytes to Message.body to be used in messages.
429+
func (m *Message) Render() error {
430+
out := bytes.Buffer{}
431+
if err := m.Campaign.Tpl.ExecuteTemplate(&out, models.BaseTpl, m); err != nil {
432+
return err
440433
}
434+
m.Body = out.Bytes()
435+
return nil
441436
}

internal/subimporter/importer.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,10 @@ import (
2121
"strings"
2222
"sync"
2323

24-
"github.com/gofrs/uuid"
25-
"github.com/lib/pq"
26-
2724
"github.com/asaskevich/govalidator"
25+
"github.com/gofrs/uuid"
2826
"github.com/knadh/listmonk/models"
27+
"github.com/lib/pq"
2928
)
3029

3130
const (
@@ -34,7 +33,10 @@ const (
3433

3534
// commitBatchSize is the number of inserts to commit in a single SQL transaction.
3635
commitBatchSize = 10000
36+
)
3737

38+
// Various import statuses.
39+
const (
3840
StatusNone = "none"
3941
StatusImporting = "importing"
4042
StatusStopping = "stopping"
@@ -113,7 +115,6 @@ func New(upsert *sql.Stmt, blacklist *sql.Stmt, updateListDate *sql.Stmt,
113115
notifCB: notifCB,
114116
status: Status{Status: StatusNone, logBuf: bytes.NewBuffer(nil)},
115117
}
116-
117118
return &im
118119
}
119120

@@ -162,7 +163,6 @@ func (im *Importer) GetLogs() []byte {
162163
if im.status.logBuf == nil {
163164
return []byte{}
164165
}
165-
166166
return im.status.logBuf.Bytes()
167167
}
168168

@@ -213,7 +213,6 @@ func (im *Importer) sendNotif(status string) error {
213213
strings.Title(status),
214214
s.Name)
215215
)
216-
217216
return im.notifCB(subject, out)
218217
}
219218

@@ -526,7 +525,6 @@ func (s *Session) LoadCSV(srcPath string, delim rune) error {
526525

527526
close(s.subQueue)
528527
failed = false
529-
530528
return nil
531529
}
532530

@@ -558,7 +556,6 @@ func (s *Session) mapCSVHeaders(csvHdrs []string, knownHdrs map[string]bool) map
558556
s.log.Printf("ignoring unknown header '%s'", h)
559557
continue
560558
}
561-
562559
hdrKeys[h] = i
563560
}
564561

@@ -601,5 +598,4 @@ func countLines(r io.Reader) (int, error) {
601598
return count, err
602599
}
603600
}
604-
605601
}

media.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package main
22

33
import (
4+
"bytes"
45
"fmt"
6+
"mime/multipart"
57
"net/http"
68
"strconv"
79

10+
"github.com/disintegration/imaging"
811
"github.com/gofrs/uuid"
912
"github.com/knadh/listmonk/internal/media"
1013
"github.com/labstack/echo"
@@ -146,3 +149,28 @@ func handleDeleteMedia(c echo.Context) error {
146149
app.media.Delete(thumbPrefix + m.Filename)
147150
return c.JSON(http.StatusOK, okResp{true})
148151
}
152+
153+
// createThumbnail reads the file object and returns a smaller image
154+
func createThumbnail(file *multipart.FileHeader) (*bytes.Reader, error) {
155+
src, err := file.Open()
156+
if err != nil {
157+
return nil, err
158+
}
159+
defer src.Close()
160+
161+
img, err := imaging.Decode(src)
162+
if err != nil {
163+
return nil, echo.NewHTTPError(http.StatusInternalServerError,
164+
fmt.Sprintf("Error decoding image: %v", err))
165+
}
166+
167+
// Encode the image into a byte slice as PNG.
168+
var (
169+
thumb = imaging.Resize(img, thumbnailSize, 0, imaging.Lanczos)
170+
out bytes.Buffer
171+
)
172+
if err := imaging.Encode(&out, thumb, imaging.PNG); err != nil {
173+
return nil, err
174+
}
175+
return bytes.NewReader(out.Bytes()), nil
176+
}

utils.go

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,10 @@ import (
44
"bytes"
55
"crypto/rand"
66
"fmt"
7-
"log"
8-
"mime/multipart"
9-
"net/http"
107
"regexp"
118
"strconv"
129
"strings"
1310

14-
"github.com/disintegration/imaging"
15-
"github.com/labstack/echo"
1611
"github.com/lib/pq"
1712
)
1813

@@ -52,28 +47,6 @@ func generateFileName(fName string) string {
5247
return name
5348
}
5449

55-
// createThumbnail reads the file object and returns a smaller image
56-
func createThumbnail(file *multipart.FileHeader) (*bytes.Reader, error) {
57-
src, err := file.Open()
58-
if err != nil {
59-
return nil, err
60-
}
61-
defer src.Close()
62-
img, err := imaging.Decode(src)
63-
if err != nil {
64-
return nil, echo.NewHTTPError(http.StatusInternalServerError,
65-
fmt.Sprintf("Error decoding image: %v", err))
66-
}
67-
t := imaging.Resize(img, thumbnailSize, 0, imaging.Lanczos)
68-
// Encode the image into a byte slice as PNG.
69-
var buf bytes.Buffer
70-
err = imaging.Encode(&buf, t, imaging.PNG)
71-
if err != nil {
72-
log.Fatal(err)
73-
}
74-
return bytes.NewReader(buf.Bytes()), nil
75-
}
76-
7750
// Given an error, pqErrMsg will try to return pq error details
7851
// if it's a pq error.
7952
func pqErrMsg(err error) string {
@@ -82,7 +55,6 @@ func pqErrMsg(err error) string {
8255
return fmt.Sprintf("%s. %s", err, err.Detail)
8356
}
8457
}
85-
8658
return err.Error()
8759
}
8860

@@ -103,7 +75,6 @@ func normalizeTags(tags []string) []string {
10375
out = append(out, string(rep))
10476
}
10577
}
106-
10778
return out
10879
}
10980

@@ -118,7 +89,6 @@ func makeMsgTpl(pageTitle, heading, msg string) msgTpl {
11889
err.Title = pageTitle
11990
err.MessageTitle = heading
12091
err.Message = msg
121-
12292
return err
12393
}
12494

@@ -127,7 +97,6 @@ func makeMsgTpl(pageTitle, heading, msg string) msgTpl {
12797
// resultant values.
12898
func parseStringIDs(s []string) ([]int64, error) {
12999
vals := make([]int64, 0, len(s))
130-
131100
for _, v := range s {
132101
i, err := strconv.ParseInt(v, 10, 64)
133102
if err != nil {
@@ -147,12 +116,11 @@ func parseStringIDs(s []string) ([]int64, error) {
147116
// generateRandomString generates a cryptographically random, alphanumeric string of length n.
148117
func generateRandomString(n int) (string, error) {
149118
const dictionary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
150-
151119
var bytes = make([]byte, n)
120+
152121
if _, err := rand.Read(bytes); err != nil {
153122
return "", err
154123
}
155-
156124
for k, v := range bytes {
157125
bytes[k] = dictionary[v%byte(len(dictionary))]
158126
}

0 commit comments

Comments
 (0)