Browse Source

Refactored project layout (fix: #109) (#111)

* Reworked project layout

* adjusted Makefile for new folder structure

* fixed path errors

* Fixed test import paths

* fixes

* only pushing image to the docker hub if the branch is master
dependabot/npm_and_yarn/web/prismjs-1.21.0
Max Schmitt 8 years ago
committed by GitHub
parent
commit
3ebe9d042f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      .gitignore
  2. 4
      .travis.yml
  3. 20
      Makefile
  4. 0
      build/Dockerfile.amd64
  5. 0
      build/Dockerfile.arm
  6. 6
      cmd/golang-url-shortener/main.go
  7. 2
      cmd/golang-url-shortener/main_test.go
  8. 0
      config/example.yaml
  9. 0
      deployments/docker-compose.yml
  10. 4
      internal/handlers/auth.go
  11. 2
      internal/handlers/auth/auth.go
  12. 2
      internal/handlers/auth/github.go
  13. 2
      internal/handlers/auth/google.go
  14. 2
      internal/handlers/auth/microsoft.go
  15. 6
      internal/handlers/auth_test.go
  16. 17
      internal/handlers/handlers.go
  17. 6
      internal/handlers/public.go
  18. 4
      internal/handlers/public_test.go
  19. 0
      internal/handlers/test.yaml
  20. 0
      internal/handlers/tmpls/protected.html
  21. 0
      internal/handlers/tmpls/token.html
  22. 2
      internal/stores/boltdb/boltdb.go
  23. 2
      internal/stores/redis/redis.go
  24. 0
      internal/stores/shared/shared.go
  25. 0
      internal/stores/sqlite/sqlite.go
  26. 8
      internal/stores/store.go
  27. 4
      internal/stores/store_test.go
  28. 0
      internal/util/config.go
  29. 0
      internal/util/config_test.go
  30. 0
      internal/util/private.go
  31. 0
      internal/util/private_test.go
  32. 0
      internal/util/test.yaml
  33. 0
      internal/util/version.go
  34. 0
      web/.gitignore
  35. 0
      web/package.json
  36. 0
      web/public/favicon.ico
  37. 0
      web/public/images/proxy_user.png
  38. 0
      web/public/images/setting-up-sharex/import-url-shortener.png
  39. 0
      web/public/images/setting-up-sharex/open-destination-settings.png
  40. 0
      web/public/images/setting-up-sharex/set-default-shortener.png
  41. 0
      web/public/index.html
  42. 0
      web/src/About/About.js
  43. 0
      web/src/Card/Card.js
  44. 0
      web/src/Home/Home.css
  45. 0
      web/src/Home/Home.js
  46. 0
      web/src/Lookup/Lookup.js
  47. 0
      web/src/Recent/Recent.js
  48. 0
      web/src/ShareX/ShareX.css
  49. 0
      web/src/ShareX/ShareX.js
  50. 0
      web/src/Visitors/Visitors.js
  51. 0
      web/src/index.js
  52. 0
      web/src/util/util.js

9
.gitignore

@ -19,9 +19,8 @@ debug.test
*.db *.db
*.lock *.lock
/config.* /config.*
/handlers/static.go /internal/handlers/static.go
/handlers/tmpls/tmpls.go /internal/handlers/tmpls/tmpls.go
/store/main.db
/releases /releases
/data /docker_releases
docker_releases/ data

4
.travis.yml

@ -11,9 +11,9 @@ install:
- npm install - npm install
script: script:
- make - make
- goveralls -service=travis-ci -ignore="handlers/static.go,handlers/tmpls/tmpls.go" - goveralls -service=travis-ci -ignore="internal/handlers/static.go,internal/handlers/tmpls/tmpls.go"
- make buildDockerImage - make buildDockerImage
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" && docker push mxschmitt/golang_url_shortener && docker push mxschmitt/golang_url_shortener:arm; fi' - 'if [[ "$TRAVIS_PULL_REQUEST" = "false" && "$TRAVIS_BRANCH" = "master" ]]; then docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" && docker push mxschmitt/golang_url_shortener && docker push mxschmitt/golang_url_shortener:arm; fi'
deploy: deploy:
provider: bintray provider: bintray
user: mxschmitt user: mxschmitt

20
Makefile

@ -4,13 +4,13 @@ runUnitTests:
go test -v ./... go test -v ./...
buildNodeFrontend: buildNodeFrontend:
cd static && yarn install cd web && yarn install
cd static && yarn build cd web && yarn build
cd static && rm build/static/**/*.map cd web && rm build/static/**/*.map
embedFrontend: embedFrontend:
cd handlers/tmpls && esc -o tmpls.go -pkg tmpls -include ^*\.html . cd internal/handlers/tmpls && esc -o tmpls.go -pkg tmpls -include ^*\.html .
cd handlers && esc -o static.go -pkg handlers -prefix ../static/build ../static/build cd internal/handlers && esc -o static.go -pkg handlers -prefix ../../web/build ../../web/build
getCMDDependencies: getCMDDependencies:
go get -v github.com/mattn/goveralls go get -v github.com/mattn/goveralls
@ -23,13 +23,13 @@ getGoDependencies:
buildProject: buildProject:
rm -rf releases rm -rf releases
mkdir releases mkdir releases
gox -output="releases/{{.Dir}}_{{.OS}}_{{.Arch}}/{{.Dir}}" -osarch="linux/amd64 linux/arm windows/amd64 windows/386" -ldflags="-X github.com/mxschmitt/golang-url-shortener/util.ldFlagNodeJS=`node --version` -X github.com/mxschmitt/golang-url-shortener/util.ldFlagCommit=`git rev-parse HEAD` -X github.com/mxschmitt/golang-url-shortener/util.ldFlagYarn=`yarn --version` -X github.com/mxschmitt/golang-url-shortener/util.ldFlagCompilationTime=`TZ=UTC date +%Y-%m-%dT%H:%M:%S+0000`" gox -output="releases/{{.Dir}}_{{.OS}}_{{.Arch}}/{{.Dir}}" -osarch="linux/amd64 linux/arm windows/amd64 windows/386" -ldflags="-X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagNodeJS=`node --version` -X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagCommit=`git rev-parse HEAD` -X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagYarn=`yarn --version` -X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagCompilationTime=`TZ=UTC date +%Y-%m-%dT%H:%M:%S+0000`" ./cmd/golang-url-shortener
find releases -maxdepth 1 -mindepth 1 -type d -exec cp build/config.yaml {} \; find releases -maxdepth 1 -mindepth 1 -type d -exec cp config/example.yaml {} \;
find releases -maxdepth 1 -mindepth 1 -type d -exec tar -cvjf {}.tar.bz2 {} \; find releases -maxdepth 1 -mindepth 1 -type d -exec tar -cvjf {}.tar.bz2 {} \;
buildDockerImage: buildDockerImage:
rm -rf docker_releases rm -rf docker_releases
mkdir docker_releases mkdir docker_releases
CGO_ENABLED=0 gox -output="docker_releases/{{.Dir}}_{{.OS}}_{{.Arch}}/{{.Dir}}" -osarch="linux/amd64 linux/arm" -ldflags="-X github.com/mxschmitt/golang-url-shortener/util.ldFlagNodeJS=`node --version` -X github.com/mxschmitt/golang-url-shortener/util.ldFlagCommit=`git rev-parse HEAD` -X github.com/mxschmitt/golang-url-shortener/util.ldFlagYarn=`yarn --version` -X github.com/mxschmitt/golang-url-shortener/util.ldFlagCompilationTime=`TZ=UTC date +%Y-%m-%dT%H:%M:%S+0000`" CGO_ENABLED=0 gox -output="docker_releases/{{.Dir}}_{{.OS}}_{{.Arch}}/{{.Dir}}" -osarch="linux/amd64 linux/arm" -ldflags="-X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagNodeJS=`node --version` -X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagCommit=`git rev-parse HEAD` -X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagYarn=`yarn --version` -X github.com/mxschmitt/golang-url-shortener/internal/util.ldFlagCompilationTime=`TZ=UTC date +%Y-%m-%dT%H:%M:%S+0000`" ./cmd/golang-url-shortener
docker build -t mxschmitt/golang_url_shortener:arm -f Dockerfile.arm . docker build -t mxschmitt/golang_url_shortener:arm -f build/Dockerfile.arm .
docker build -t mxschmitt/golang_url_shortener -f Dockerfile.amd64 . docker build -t mxschmitt/golang_url_shortener -f build/Dockerfile.amd64 .

0
Dockerfile.amd64 → build/Dockerfile.amd64

0
Dockerfile.arm → build/Dockerfile.arm

6
main.go → cmd/golang-url-shortener/main.go

@ -4,9 +4,9 @@ import (
"os" "os"
"os/signal" "os/signal"
"github.com/mxschmitt/golang-url-shortener/handlers" "github.com/mxschmitt/golang-url-shortener/internal/handlers"
"github.com/mxschmitt/golang-url-shortener/stores" "github.com/mxschmitt/golang-url-shortener/internal/stores"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/shiena/ansicolor" "github.com/shiena/ansicolor"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"

2
main_test.go → cmd/golang-url-shortener/main_test.go

@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
) )
func TestInitShortener(t *testing.T) { func TestInitShortener(t *testing.T) {

0
build/config.yaml → config/example.yaml

0
docker-compose.yml → deployments/docker-compose.yml

4
handlers/auth.go → internal/handlers/auth.go

@ -4,8 +4,8 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"github.com/mxschmitt/golang-url-shortener/handlers/auth" "github.com/mxschmitt/golang-url-shortener/internal/handlers/auth"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
jwt "github.com/dgrijalva/jwt-go" jwt "github.com/dgrijalva/jwt-go"

2
handlers/auth/auth.go → internal/handlers/auth/auth.go

@ -10,7 +10,7 @@ import (
jwt "github.com/dgrijalva/jwt-go" jwt "github.com/dgrijalva/jwt-go"
"github.com/gin-gonic/contrib/sessions" "github.com/gin-gonic/contrib/sessions"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )

2
handlers/auth/github.go → internal/handlers/auth/github.go

@ -4,7 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/oauth2/github" "golang.org/x/oauth2/github"

2
handlers/auth/google.go → internal/handlers/auth/google.go

@ -4,7 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/pkg/errors" "github.com/pkg/errors"
"golang.org/x/oauth2" "golang.org/x/oauth2"
"golang.org/x/oauth2/google" "golang.org/x/oauth2/google"

2
handlers/auth/microsoft.go → internal/handlers/auth/microsoft.go

@ -7,7 +7,7 @@ import (
"golang.org/x/oauth2/microsoft" "golang.org/x/oauth2/microsoft"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/pkg/errors" "github.com/pkg/errors"

6
handlers/auth_test.go → internal/handlers/auth_test.go

@ -11,9 +11,9 @@ import (
jwt "github.com/dgrijalva/jwt-go" jwt "github.com/dgrijalva/jwt-go"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/mxschmitt/golang-url-shortener/handlers/auth" "github.com/mxschmitt/golang-url-shortener/internal/handlers/auth"
"github.com/mxschmitt/golang-url-shortener/stores" "github.com/mxschmitt/golang-url-shortener/internal/stores"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/pkg/errors" "github.com/pkg/errors"
) )

17
handlers/handlers.go → internal/handlers/handlers.go

@ -9,9 +9,9 @@ import (
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/mxschmitt/golang-url-shortener/handlers/tmpls" "github.com/mxschmitt/golang-url-shortener/internal/handlers/tmpls"
"github.com/mxschmitt/golang-url-shortener/stores" "github.com/mxschmitt/golang-url-shortener/internal/stores"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/pkg/errors" "github.com/pkg/errors"
) )
@ -145,13 +145,14 @@ func (h *Handler) setHandlers() error {
} }
} }
protected := h.engine.Group("/api/v1/protected") protected := h.engine.Group("/api/v1/protected")
if util.GetConfig().AuthBackend == "oauth" { switch util.GetConfig().AuthBackend {
logrus.Info("Using OAuth auth backend") case "oauth":
logrus.Info("Using OAuth auth backend: oauth")
protected.Use(h.oAuthMiddleware) protected.Use(h.oAuthMiddleware)
} else if util.GetConfig().AuthBackend == "proxy" { case "proxy":
logrus.Info("Using proxy auth backend") logrus.Info("Using OAuth auth backend: proxy")
protected.Use(h.proxyAuthMiddleware) protected.Use(h.proxyAuthMiddleware)
} else { default:
logrus.Fatalf("Auth backend method '%s' is not recognized", util.GetConfig().AuthBackend) logrus.Fatalf("Auth backend method '%s' is not recognized", util.GetConfig().AuthBackend)
} }
protected.POST("/create", h.handleCreate) protected.POST("/create", h.handleCreate)

6
handlers/public.go → internal/handlers/public.go

@ -12,9 +12,9 @@ import (
"time" "time"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/mxschmitt/golang-url-shortener/handlers/auth" "github.com/mxschmitt/golang-url-shortener/internal/handlers/auth"
"github.com/mxschmitt/golang-url-shortener/stores/shared" "github.com/mxschmitt/golang-url-shortener/internal/stores/shared"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
) )

4
handlers/public_test.go → internal/handlers/public_test.go

@ -11,8 +11,8 @@ import (
"testing" "testing"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/mxschmitt/golang-url-shortener/stores" "github.com/mxschmitt/golang-url-shortener/internal/stores"
"github.com/mxschmitt/golang-url-shortener/stores/shared" "github.com/mxschmitt/golang-url-shortener/internal/stores/shared"
) )
const testURL = "https://www.google.de/" const testURL = "https://www.google.de/"

0
handlers/test.yaml → internal/handlers/test.yaml

0
handlers/tmpls/protected.html → internal/handlers/tmpls/protected.html

0
handlers/tmpls/token.html → internal/handlers/tmpls/token.html

2
stores/boltdb/boltdb.go → internal/stores/boltdb/boltdb.go

@ -6,7 +6,7 @@ import (
"time" "time"
"github.com/boltdb/bolt" "github.com/boltdb/bolt"
"github.com/mxschmitt/golang-url-shortener/stores/shared" "github.com/mxschmitt/golang-url-shortener/internal/stores/shared"
"github.com/pkg/errors" "github.com/pkg/errors"
) )

2
stores/redis/redis.go → internal/stores/redis/redis.go

@ -6,7 +6,7 @@ import (
"time" "time"
"github.com/go-redis/redis" "github.com/go-redis/redis"
"github.com/mxschmitt/golang-url-shortener/stores/shared" "github.com/mxschmitt/golang-url-shortener/internal/stores/shared"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )

0
stores/shared/shared.go → internal/stores/shared/shared.go

0
stores/sqlite/sqlite.go → internal/stores/sqlite/sqlite.go

8
stores/store.go → internal/stores/store.go

@ -12,10 +12,10 @@ import (
"unicode" "unicode"
"github.com/asaskevich/govalidator" "github.com/asaskevich/govalidator"
"github.com/mxschmitt/golang-url-shortener/stores/boltdb" "github.com/mxschmitt/golang-url-shortener/internal/stores/boltdb"
"github.com/mxschmitt/golang-url-shortener/stores/redis" "github.com/mxschmitt/golang-url-shortener/internal/stores/redis"
"github.com/mxschmitt/golang-url-shortener/stores/shared" "github.com/mxschmitt/golang-url-shortener/internal/stores/shared"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
"github.com/pborman/uuid" "github.com/pborman/uuid"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"

4
stores/store_test.go → internal/stores/store_test.go

@ -6,9 +6,9 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/mxschmitt/golang-url-shortener/stores/shared" "github.com/mxschmitt/golang-url-shortener/internal/stores/shared"
"github.com/mxschmitt/golang-url-shortener/util" "github.com/mxschmitt/golang-url-shortener/internal/util"
) )
var testData = struct { var testData = struct {

0
util/config.go → internal/util/config.go

0
util/config_test.go → internal/util/config_test.go

0
util/private.go → internal/util/private.go

0
util/private_test.go → internal/util/private_test.go

0
util/test.yaml → internal/util/test.yaml

0
util/version.go → internal/util/version.go

0
static/.gitignore → web/.gitignore

0
static/package.json → web/package.json

0
static/public/favicon.ico → web/public/favicon.ico

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

0
static/public/images/proxy_user.png → web/public/images/proxy_user.png

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

0
static/public/images/setting-up-sharex/import-url-shortener.png → web/public/images/setting-up-sharex/import-url-shortener.png

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

0
static/public/images/setting-up-sharex/open-destination-settings.png → web/public/images/setting-up-sharex/open-destination-settings.png

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

0
static/public/images/setting-up-sharex/set-default-shortener.png → web/public/images/setting-up-sharex/set-default-shortener.png

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

0
static/public/index.html → web/public/index.html

0
static/src/About/About.js → web/src/About/About.js

0
static/src/Card/Card.js → web/src/Card/Card.js

0
static/src/Home/Home.css → web/src/Home/Home.css

0
static/src/Home/Home.js → web/src/Home/Home.js

0
static/src/Lookup/Lookup.js → web/src/Lookup/Lookup.js

0
static/src/Recent/Recent.js → web/src/Recent/Recent.js

0
static/src/ShareX/ShareX.css → web/src/ShareX/ShareX.css

0
static/src/ShareX/ShareX.js → web/src/ShareX/ShareX.js

0
static/src/Visitors/Visitors.js → web/src/Visitors/Visitors.js

0
static/src/index.js → web/src/index.js

0
static/src/util/util.js → web/src/util/util.js

Loading…
Cancel
Save