Browse Source

Fix #38

dependabot/npm_and_yarn/web/prismjs-1.21.0
Max Schmitt 8 years ago
parent
commit
547acee4fe
  1. 3
      handlers/auth.go
  2. 5
      handlers/auth_test.go
  3. 8
      handlers/handlers.go
  4. 22
      main.go
  5. 6
      store/store.go
  6. 9
      store/store_test.go

3
handlers/auth.go

@ -8,6 +8,7 @@ import (
"time" "time"
"github.com/maxibanki/golang-url-shortener/util" "github.com/maxibanki/golang-url-shortener/util"
"github.com/sirupsen/logrus"
"github.com/spf13/viper" "github.com/spf13/viper"
jwt "github.com/dgrijalva/jwt-go" jwt "github.com/dgrijalva/jwt-go"
@ -86,7 +87,7 @@ func (h *Handler) authMiddleware(c *gin.Context) {
c.AbortWithStatusJSON(http.StatusForbidden, gin.H{ c.AbortWithStatusJSON(http.StatusForbidden, gin.H{
"error": fmt.Sprintf("token is not valid: %v", authError), "error": fmt.Sprintf("token is not valid: %v", authError),
}) })
h.log.Debugf("Authentication middleware failed: %v\n", authError) logrus.Debugf("Authentication middleware failed: %v\n", authError)
} else { } else {
c.AbortWithStatusJSON(http.StatusForbidden, gin.H{ c.AbortWithStatusJSON(http.StatusForbidden, gin.H{
"error": "authentication failed", "error": "authentication failed",

5
handlers/auth_test.go

@ -14,7 +14,6 @@ import (
"github.com/maxibanki/golang-url-shortener/store" "github.com/maxibanki/golang-url-shortener/store"
"github.com/maxibanki/golang-url-shortener/util" "github.com/maxibanki/golang-url-shortener/util"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/spf13/viper" "github.com/spf13/viper"
"golang.org/x/oauth2/google" "golang.org/x/oauth2/google"
) )
@ -47,11 +46,11 @@ func TestCreateBackend(t *testing.T) {
if err := util.ReadInConfig(); err != nil { if err := util.ReadInConfig(); err != nil {
t.Fatalf("could not reload config file: %v", err) t.Fatalf("could not reload config file: %v", err)
} }
store, err := store.New(logrus.New()) store, err := store.New()
if err != nil { if err != nil {
t.Fatalf("could not create store: %v", err) t.Fatalf("could not create store: %v", err)
} }
handler, err := New(*store, logrus.New(), true) handler, err := New(*store, true)
if err != nil { if err != nil {
t.Fatalf("could not create handler: %v", err) t.Fatalf("could not create handler: %v", err)
} }

8
handlers/handlers.go

@ -7,6 +7,7 @@ import (
"time" "time"
"github.com/gin-gonic/contrib/ginrus" "github.com/gin-gonic/contrib/ginrus"
"github.com/sirupsen/logrus"
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -14,7 +15,6 @@ import (
"github.com/maxibanki/golang-url-shortener/store" "github.com/maxibanki/golang-url-shortener/store"
"github.com/maxibanki/golang-url-shortener/util" "github.com/maxibanki/golang-url-shortener/util"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus"
"golang.org/x/oauth2" "golang.org/x/oauth2"
) )
@ -24,17 +24,15 @@ type Handler struct {
store store.Store store store.Store
engine *gin.Engine engine *gin.Engine
oAuthConf *oauth2.Config oAuthConf *oauth2.Config
log *logrus.Logger
} }
// New initializes the http handlers // New initializes the http handlers
func New(store store.Store, log *logrus.Logger, testing bool) (*Handler, error) { func New(store store.Store, testing bool) (*Handler, error) {
if !viper.GetBool("General.EnableDebugMode") { if !viper.GetBool("General.EnableDebugMode") {
gin.SetMode(gin.ReleaseMode) gin.SetMode(gin.ReleaseMode)
} }
h := &Handler{ h := &Handler{
store: store, store: store,
log: log,
engine: gin.New(), engine: gin.New(),
} }
if err := h.setHandlers(); err != nil { if err := h.setHandlers(); err != nil {
@ -66,7 +64,7 @@ func (h *Handler) setHandlers() error {
if err := h.setTemplateFromFS("token.tmpl"); err != nil { if err := h.setTemplateFromFS("token.tmpl"); err != nil {
return errors.Wrap(err, "could not set template from FS") return errors.Wrap(err, "could not set template from FS")
} }
h.engine.Use(ginrus.Ginrus(h.log, time.RFC3339, false)) h.engine.Use(ginrus.Ginrus(logrus.StandardLogger(), time.RFC3339, false))
protected := h.engine.Group("/api/v1/protected") protected := h.engine.Group("/api/v1/protected")
protected.Use(h.authMiddleware) protected.Use(h.authMiddleware)
protected.POST("/create", h.handleCreate) protected.POST("/create", h.handleCreate)

22
main.go

@ -1,6 +1,7 @@
package main package main
import ( import (
"log"
"os" "os"
"os/signal" "os/signal"
@ -17,32 +18,31 @@ import (
func main() { func main() {
stop := make(chan os.Signal, 1) stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt) signal.Notify(stop, os.Interrupt)
log := logrus.New() logrus.SetFormatter(&logrus.TextFormatter{
log.Formatter = &logrus.TextFormatter{
ForceColors: true, ForceColors: true,
} })
log.Out = ansicolor.NewAnsiColorWriter(os.Stdout) logrus.SetOutput(ansicolor.NewAnsiColorWriter(os.Stdout))
close, err := initShortener(log) close, err := initShortener()
if err != nil { if err != nil {
log.Fatalf("could not init shortener: %v", err) logrus.Fatalf("could not init shortener: %v", err)
} }
<-stop <-stop
log.Println("Shutting down...") logrus.Println("Shutting down...")
close() close()
} }
func initShortener(log *logrus.Logger) (func(), error) { func initShortener() (func(), error) {
if err := util.ReadInConfig(); err != nil { if err := util.ReadInConfig(); err != nil {
return nil, errors.Wrap(err, "could not reload config file") return nil, errors.Wrap(err, "could not reload config file")
} }
if viper.GetBool("General.EnableDebugMode") { if viper.GetBool("General.EnableDebugMode") {
log.SetLevel(logrus.DebugLevel) logrus.SetLevel(logrus.DebugLevel)
} }
store, err := store.New(log) store, err := store.New()
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not create store") return nil, errors.Wrap(err, "could not create store")
} }
handler, err := handlers.New(*store, log, false) handler, err := handlers.New(*store, false)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not create handlers") return nil, errors.Wrap(err, "could not create handlers")
} }

6
store/store.go

@ -20,7 +20,6 @@ type Store struct {
db *bolt.DB db *bolt.DB
bucketName []byte bucketName []byte
idLength int idLength int
log *logrus.Logger
} }
// Entry is the data set which is stored in the DB as JSON // Entry is the data set which is stored in the DB as JSON
@ -49,7 +48,7 @@ var ErrGeneratingIDFailed = errors.New("could not generate unique id, all ten tr
var ErrIDIsEmpty = errors.New("the given ID is empty") var ErrIDIsEmpty = errors.New("the given ID is empty")
// New initializes the store with the db // New initializes the store with the db
func New(log *logrus.Logger) (*Store, error) { func New() (*Store, error) {
db, err := bolt.Open(filepath.Join(util.GetDataDir(), "main.db"), 0644, &bolt.Options{Timeout: 1 * time.Second}) db, err := bolt.Open(filepath.Join(util.GetDataDir(), "main.db"), 0644, &bolt.Options{Timeout: 1 * time.Second})
if err != nil { if err != nil {
return nil, errors.Wrap(err, "could not open bolt DB database") return nil, errors.Wrap(err, "could not open bolt DB database")
@ -66,7 +65,6 @@ func New(log *logrus.Logger) (*Store, error) {
db: db, db: db,
idLength: viper.GetInt("General.ShortedIDLength"), idLength: viper.GetInt("General.ShortedIDLength"),
bucketName: bucketName, bucketName: bucketName,
log: log,
}, nil }, nil
} }
@ -128,7 +126,7 @@ func (s *Store) CreateEntry(entry Entry, givenID string) (string, error) {
if err != nil && givenID != "" { if err != nil && givenID != "" {
return "", err return "", err
} else if err != nil { } else if err != nil {
s.log.Debugf("Could not create entry: %v", err) logrus.Debugf("Could not create entry: %v", err)
continue continue
} }
return id, nil return id, nil

9
store/store_test.go

@ -4,7 +4,6 @@ import (
"os" "os"
"testing" "testing"
"github.com/sirupsen/logrus"
"github.com/spf13/viper" "github.com/spf13/viper"
) )
@ -41,7 +40,7 @@ func TestGenerateRandomString(t *testing.T) {
func TestNewStore(t *testing.T) { func TestNewStore(t *testing.T) {
t.Run("create store with correct arguments", func(r *testing.T) { t.Run("create store with correct arguments", func(r *testing.T) {
store, err := New(logrus.New()) store, err := New()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -50,7 +49,7 @@ func TestNewStore(t *testing.T) {
} }
func TestCreateEntry(t *testing.T) { func TestCreateEntry(t *testing.T) {
store, err := New(logrus.New()) store, err := New()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -72,7 +71,7 @@ func TestCreateEntry(t *testing.T) {
} }
func TestGetEntryByID(t *testing.T) { func TestGetEntryByID(t *testing.T) {
store, err := New(logrus.New()) store, err := New()
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -88,7 +87,7 @@ func TestGetEntryByID(t *testing.T) {
} }
func TestIncreaseVisitCounter(t *testing.T) { func TestIncreaseVisitCounter(t *testing.T) {
store, err := New(logrus.New()) store, err := New()
if err != nil { if err != nil {
t.Fatalf("could not create store: %v", err) t.Fatalf("could not create store: %v", err)
} }

Loading…
Cancel
Save