Compare commits
No commits in common. "8676ca4df980643c0c6e5eab7e997ae466d6e7a1" and "2bdfd4dc36e7bda813954671a187de05fd9cff5a" have entirely different histories.
8676ca4df9
...
2bdfd4dc36
@ -43,7 +43,7 @@ func GetUsersHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
|
|
||||||
// Fill the users with the polochons
|
// Fill the users with the polochons
|
||||||
for _, u := range users {
|
for _, u := range users {
|
||||||
if !u.PolochonID.Valid {
|
if u.PolochonID.Valid == false {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
u.Polochon = polochonMap[u.PolochonID.String]
|
u.Polochon = polochonMap[u.PolochonID.String]
|
||||||
|
@ -44,19 +44,19 @@ func (c *Channel) writer() {
|
|||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-pingTicker.C:
|
case <-pingTicker.C:
|
||||||
_ = c.conn.SetWriteDeadline(time.Now().Add(writeWait))
|
c.conn.SetWriteDeadline(time.Now().Add(writeWait))
|
||||||
if err := c.conn.WriteMessage(websocket.PingMessage, nil); err != nil {
|
if err := c.conn.WriteMessage(websocket.PingMessage, nil); err != nil {
|
||||||
c.log.Warnf("error writing message: %s", err)
|
c.log.Warnf("error writing message: %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case e := <-c.serverEventStream:
|
case e := <-c.serverEventStream:
|
||||||
_ = c.conn.SetWriteDeadline(time.Now().Add(writeWait))
|
c.conn.SetWriteDeadline(time.Now().Add(writeWait))
|
||||||
if err := c.conn.WriteJSON(e); err != nil {
|
if err := c.conn.WriteJSON(e); err != nil {
|
||||||
c.log.Warnf("error writing JSON message: %s", err)
|
c.log.Warnf("error writing JSON message: %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case err := <-c.serverErrorStream:
|
case err := <-c.serverErrorStream:
|
||||||
_ = c.conn.SetWriteDeadline(time.Now().Add(writeWait))
|
c.conn.SetWriteDeadline(time.Now().Add(writeWait))
|
||||||
if err := c.conn.WriteJSON(err); err != nil {
|
if err := c.conn.WriteJSON(err); err != nil {
|
||||||
c.log.Warnf("error writing JSON error: %s", err)
|
c.log.Warnf("error writing JSON error: %s", err)
|
||||||
return
|
return
|
||||||
@ -71,7 +71,7 @@ func (c *Channel) writer() {
|
|||||||
// go routine reading messages from the websocket connection
|
// go routine reading messages from the websocket connection
|
||||||
func (c *Channel) reader() {
|
func (c *Channel) reader() {
|
||||||
// Read loop
|
// Read loop
|
||||||
_ = c.conn.SetReadDeadline(time.Now().Add(pongWait))
|
c.conn.SetReadDeadline(time.Now().Add(pongWait))
|
||||||
for {
|
for {
|
||||||
msg := ClientMessage{}
|
msg := ClientMessage{}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ func WsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
|
|
||||||
// The pong handler only postpone the read deadline
|
// The pong handler only postpone the read deadline
|
||||||
ws.SetPongHandler(func(string) error {
|
ws.SetPongHandler(func(string) error {
|
||||||
_ = ws.SetReadDeadline(time.Now().Add(pongWait))
|
ws.SetReadDeadline(time.Now().Add(pongWait))
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -101,10 +101,7 @@ func (p *PolochonEventers) Unsubscribe(chanl *Channel) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := tn.Unsubscribe(chanl); err != nil {
|
tn.Unsubscribe(chanl)
|
||||||
p.log.Errorf("failed to unsubscribe eventer: %s", err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(tn.Subscribers()) == 0 {
|
if len(tn.Subscribers()) == 0 {
|
||||||
p.log.Debugf("empty subscribers for this polochon, delete it")
|
p.log.Debugf("empty subscribers for this polochon, delete it")
|
||||||
|
@ -21,12 +21,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := run(); err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "error while running the app: %s\n", err.Error())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func run() error {
|
|
||||||
var cfgPath string
|
var cfgPath string
|
||||||
cfgPath = os.Getenv("CONFIG_FILE")
|
cfgPath = os.Getenv("CONFIG_FILE")
|
||||||
if cfgPath == "" {
|
if cfgPath == "" {
|
||||||
@ -41,13 +35,13 @@ func run() error {
|
|||||||
log := logrus.NewEntry(logger)
|
log := logrus.NewEntry(logger)
|
||||||
cf, err := config.Load(cfgPath, log)
|
cf, err := config.Load(cfgPath, log)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the database
|
// Connect to the database
|
||||||
db, err := sqlx.Connect("postgres", cf.PGDSN)
|
db, err := sqlx.Connect("postgres", cf.PGDSN)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
backend := &models.Backend{Database: db}
|
backend := &models.Backend{Database: db}
|
||||||
|
|
||||||
@ -82,22 +76,16 @@ func run() error {
|
|||||||
if cf.PeriodicRefresh.Enabled {
|
if cf.PeriodicRefresh.Enabled {
|
||||||
// Refresh the library every 6h
|
// Refresh the library every 6h
|
||||||
env.Log.Debugf("Running refresh cron every %s", cf.PeriodicRefresh.Interval)
|
env.Log.Debugf("Running refresh cron every %s", cf.PeriodicRefresh.Interval)
|
||||||
if err := c.AddFunc(fmt.Sprintf("@every %s", cf.PeriodicRefresh.Interval), func() {
|
c.AddFunc(fmt.Sprintf("@every %s", cf.PeriodicRefresh.Interval), func() {
|
||||||
env.Log.Infof("Running refresh cron!")
|
env.Log.Infof("Running refresh cron!")
|
||||||
extmedias.Refresh(env)
|
extmedias.Refresh(env)
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
env.Log.Debugf("Running Imdb refresh cron every 24h")
|
env.Log.Debugf("Running Imdb refresh cron every 24h")
|
||||||
if err := c.AddFunc(fmt.Sprintf("@every 24h"), func() {
|
c.AddFunc(fmt.Sprintf("@every 24h"), func() {
|
||||||
env.Log.Infof("Running IMDB refresh cron!")
|
env.Log.Infof("Running IMDB refresh cron!")
|
||||||
if err := ratings.Refresh(env); err != nil {
|
ratings.Refresh(env)
|
||||||
env.Log.Errorf("failed to refresh ratings: %s", err.Error())
|
})
|
||||||
}
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the cron
|
// Start the cron
|
||||||
@ -118,9 +106,5 @@ func run() error {
|
|||||||
// Compress responses
|
// Compress responses
|
||||||
n.Use(gzip.Gzip(gzip.DefaultCompression))
|
n.Use(gzip.Gzip(gzip.DefaultCompression))
|
||||||
n.UseHandler(env.Router)
|
n.UseHandler(env.Router)
|
||||||
|
n.Run(":" + cf.Port)
|
||||||
addr := ":" + cf.Port
|
|
||||||
env.Log.Infof("listening on %s", addr)
|
|
||||||
|
|
||||||
return http.ListenAndServe(addr, n)
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
getRatingQueryByImdbID = ` SELECT * FROM imdb_ratings WHERE imdb_id=$1;`
|
||||||
|
|
||||||
upsertRatingQuery = `INSERT INTO imdb_ratings (imdb_id, rating, votes) VALUES (:imdb_id, :rating, :votes)
|
upsertRatingQuery = `INSERT INTO imdb_ratings (imdb_id, rating, votes) VALUES (:imdb_id, :rating, :votes)
|
||||||
ON CONFLICT (imdb_id)
|
ON CONFLICT (imdb_id)
|
||||||
DO UPDATE
|
DO UPDATE
|
||||||
|
@ -15,6 +15,7 @@ const (
|
|||||||
polochons (name, url, token, admin_id)
|
polochons (name, url, token, admin_id)
|
||||||
VALUES ($1, $2, $3, $4)
|
VALUES ($1, $2, $3, $4)
|
||||||
RETURNING id;`
|
RETURNING id;`
|
||||||
|
getPolochonQuery = `SELECT * FROM polochons WHERE name=$1;`
|
||||||
getPolochonByIDQuery = `SELECT * FROM polochons WHERE id=$1;`
|
getPolochonByIDQuery = `SELECT * FROM polochons WHERE id=$1;`
|
||||||
getPolochonsByUserIDQuery = `SELECT * FROM polochons WHERE admin_id=$1 ORDER BY created_at DESC;`
|
getPolochonsByUserIDQuery = `SELECT * FROM polochons WHERE admin_id=$1 ORDER BY created_at DESC;`
|
||||||
updatePolochonQuery = `UPDATE polochons SET
|
updatePolochonQuery = `UPDATE polochons SET
|
||||||
@ -93,9 +94,7 @@ func (p *Polochon) Update(ex *sqlx.DB) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
if err := rows.StructScan(p); err != nil {
|
rows.StructScan(p)
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -136,9 +136,7 @@ func (u *User) Update(ex *sqlx.DB) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
if err := rows.StructScan(u); err != nil {
|
rows.StructScan(u)
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -272,10 +272,9 @@ func GetMovieWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Reques
|
|||||||
|
|
||||||
// Add the movie to the wishlist
|
// Add the movie to the wishlist
|
||||||
for _, imdbID := range moviesWishlist.List() {
|
for _, imdbID := range moviesWishlist.List() {
|
||||||
err := wishlist.AddMovie(&polochon.WishedMovie{ImdbID: imdbID})
|
wishlist.AddMovie(&polochon.WishedMovie{
|
||||||
if err != nil {
|
ImdbID: imdbID,
|
||||||
return env.RenderError(w, err)
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,14 +310,11 @@ func GetShowWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Request
|
|||||||
|
|
||||||
// Add the show to the wishlist
|
// Add the show to the wishlist
|
||||||
for _, show := range moviesWishlist.List() {
|
for _, show := range moviesWishlist.List() {
|
||||||
err := wishlist.AddShow(&polochon.WishedShow{
|
wishlist.AddShow(&polochon.WishedShow{
|
||||||
ImdbID: show.ImdbID,
|
ImdbID: show.ImdbID,
|
||||||
Season: show.Season,
|
Season: show.Season,
|
||||||
Episode: show.Episode,
|
Episode: show.Episode,
|
||||||
})
|
})
|
||||||
if err != nil {
|
|
||||||
return env.RenderError(w, err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
addTokenQuery = `INSERT INTO tokens (token, username, ip, description) VALUES ($1, $2, $3, $4);`
|
addTokenQuery = `INSERT INTO tokens (token, username, ip, description) VALUES ($1, $2, $3, $4);`
|
||||||
|
getTokenQuery = `SELECT * FROM tokens WHERE token=$1;`
|
||||||
getUserTokenQuery = `SELECT * FROM tokens WHERE username=$1 and token=$2;`
|
getUserTokenQuery = `SELECT * FROM tokens WHERE username=$1 and token=$2;`
|
||||||
getUserTokensQuery = `SELECT * FROM tokens WHERE username=$1;`
|
getUserTokensQuery = `SELECT * FROM tokens WHERE username=$1;`
|
||||||
deleteTokenQuery = `DELETE FROM tokens WHERE username=$1 AND token=$2;`
|
deleteTokenQuery = `DELETE FROM tokens WHERE username=$1 AND token=$2;`
|
||||||
@ -99,9 +100,7 @@ func (t *Token) Update(db *sqlx.DB) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
if err := rows.StructScan(t); err != nil {
|
rows.StructScan(t)
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ type Env struct {
|
|||||||
Render *render.Render
|
Render *render.Render
|
||||||
Auth *auth.Authorizer
|
Auth *auth.Authorizer
|
||||||
Config *config.Config
|
Config *config.Config
|
||||||
|
loginRoute string
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnvParams represents parameters for NewEnv
|
// EnvParams represents parameters for NewEnv
|
||||||
|
Loading…
x
Reference in New Issue
Block a user