Browse Source

Merge commit '4b2195d1743fd78083862bcbe18c5f10a746a54b' into HEAD

feature/update-route-registration
Jenkins 3 years ago
committed by Fabian Vowie
parent
commit
8df80d159f
No known key found for this signature in database GPG Key ID: C27317C33B27C410
  1. 21
      main.go
  2. 24
      settings/settings.go
  3. 8
      settings/settings_test.go

21
main.go

@ -63,15 +63,22 @@ func main() {
pipes := pipelines.LoadPipelines()
authMiddleware := middlewares.CreateAuthenticationMiddleware(appSettings.Token)
rateLimiterMiddleware, err := middlewares.CreateRateLimiterMiddleware(appSettings.RateLimiter.RequestsPerMinute, appSettings.RateLimiter.AllowedBurst)
if err != nil {
panic(err)
r := mux.NewRouter()
if appSettings.Authentication.Enabled {
authMiddleware := middlewares.CreateAuthenticationMiddleware(appSettings.Authentication.Token)
r.Use(authMiddleware.Middleware)
}
r := mux.NewRouter()
r.Use(authMiddleware.Middleware)
r.Use(rateLimiterMiddleware.Middleware)
if appSettings.RateLimiter.Enabled {
rateLimiterMiddleware, err := middlewares.CreateRateLimiterMiddleware(appSettings.RateLimiter.RequestsPerMinute, appSettings.RateLimiter.AllowedBurst)
if err != nil {
panic(err)
}
r.Use(rateLimiterMiddleware.Middleware)
}
r.HandleFunc("/", IndexHandler)

24
settings/settings.go

@ -15,10 +15,10 @@ const (
type FileSystemType int
type Settings struct {
Endpoint string `json:"endpoint"`
Token string `json:"token"`
RateLimiter RateLimiterSettings `json:"rate_limiter"`
StorageProvider StorageSettings `json:"storage_provider"`
Endpoint string `json:"endpoint"`
Authentication AuthenticationSettings `json:"authentication"`
RateLimiter RateLimiterSettings `json:"rate_limiter"`
StorageProvider StorageSettings `json:"storage_provider"`
}
type StorageSettings struct {
@ -26,9 +26,15 @@ type StorageSettings struct {
BasePath string `json:"base_path"`
}
type AuthenticationSettings struct {
Enabled bool `json:"enabled"`
Token string `json:"token"`
}
type RateLimiterSettings struct {
RequestsPerMinute int `json:"requests_per_minute"`
AllowedBurst int `json:"allowed_burst"`
Enabled bool `json:"enabled"`
RequestsPerMinute int `json:"requests_per_minute"`
AllowedBurst int `json:"allowed_burst"`
}
func parseSettings(data []byte) Settings {
@ -56,8 +62,12 @@ func LoadSettings(fileSystem afero.Fs) (Settings, error) {
// If file does not exist, create default settings
defaultSettings := Settings{
Endpoint: "127.0.0.1:8000",
Token: "changeme",
Authentication: AuthenticationSettings{
Enabled: true,
Token: "changeme",
},
RateLimiter: RateLimiterSettings{
Enabled: true,
RequestsPerMinute: 20,
AllowedBurst: 5,
},

8
settings/settings_test.go

@ -12,8 +12,12 @@ import (
func TestSettingsParsing(t *testing.T) {
const file string = `{
"endpoint": "0.0.0.0:8000",
"token": "foobar",
"authentication": {
"enabled": true,
"token": "foobar"
},
"rate_limiter": {
"enabled": true,
"requests_per_minute": 20,
"allowed_burst": 5
},
@ -27,7 +31,7 @@ func TestSettingsParsing(t *testing.T) {
settings := parseSettings([]byte(file))
assert.Equal(t, "0.0.0.0:8000", settings.Endpoint)
assert.Equal(t, "foobar", settings.Token)
assert.Equal(t, "foobar", settings.Authentication.Token)
assert.Equal(t, "assets", settings.StorageProvider.BasePath)
})
}

Loading…
Cancel
Save