Browse Source

minor refactoring

master
Christian Müller 8 years ago
parent
commit
d41e0f0384
  1. 18
      server.go
  2. 15
      stats.go
  3. 5
      storage.go

18
server.go

@ -8,7 +8,6 @@ import ( @@ -8,7 +8,6 @@ import (
"math"
"net/http"
"os"
"sync"
"time"
"database/sql"
@ -19,10 +18,7 @@ import ( @@ -19,10 +18,7 @@ import (
"github.com/labstack/gommon/log"
)
var (
stats = &sync.Map{}
ads []byte
)
const fraudThreshold = 7
type Template struct{ templates *template.Template }
@ -40,6 +36,7 @@ func main() { @@ -40,6 +36,7 @@ func main() {
}
defer db.Close()
var ads []byte
adsFName := os.Getenv("ADS")
if adsFName != "" {
var err error
@ -49,7 +46,7 @@ func main() { @@ -49,7 +46,7 @@ func main() {
}
}
go persistStats(e.Logger, db, stats)
go persistStats(e.Logger, db)
go cleanAccessRegistry(e.Logger)
e.Renderer = &Template{templates: template.Must(template.ParseGlob("assets/templates/*.html"))}
@ -67,15 +64,8 @@ func main() { @@ -67,15 +64,8 @@ func main() {
e.GET("/:id", func(c echo.Context) error {
n, code := load(c, db)
defer incViews(n)
n.prepare()
views := n.Views
if val, ok := stats.Load(n.ID); ok {
intVal, ok := val.(int)
if ok {
views = intVal
}
}
defer stats.Store(n.ID, views+1)
if fraudelent(n) {
n.Ads = mdTmplHTML(ads)
}

15
stats.go

@ -10,7 +10,9 @@ import ( @@ -10,7 +10,9 @@ import (
const statsSavingInterval = 1 * time.Minute
func persistStats(logger echo.Logger, db *sql.DB, stats *sync.Map) {
var stats = &sync.Map{}
func persistStats(logger echo.Logger, db *sql.DB) {
for {
time.Sleep(statsSavingInterval)
tx, err := db.Begin()
@ -35,3 +37,14 @@ func persistStats(logger echo.Logger, db *sql.DB, stats *sync.Map) { @@ -35,3 +37,14 @@ func persistStats(logger echo.Logger, db *sql.DB, stats *sync.Map) {
}
}
}
func incViews(n *Note) {
views := n.Views
if val, ok := stats.Load(n.ID); ok {
intVal, ok := val.(int)
if ok {
views = intVal
}
}
defer stats.Store(n.ID, views+1)
}

5
storage.go

@ -19,10 +19,7 @@ func init() { @@ -19,10 +19,7 @@ func init() {
rand.Seed(time.Now().UnixNano())
}
const (
idLength = 5
fraudThreshold = 7
)
const idLength = 5
type Note struct {
ID, Title, Text, Password, DeprecatedPassword string

Loading…
Cancel
Save