Skip to content

Commit 6eb090a

Browse files
authored
Merge pull request #15 from RobyFerro/dynamic-config
Dynamic config
2 parents c1d14d5 + f402526 commit 6eb090a

File tree

10 files changed

+85
-180
lines changed

10 files changed

+85
-180
lines changed

CHANGELOG.md

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,61 @@
33
All notable changes to the "Go-Web Framework" will be documented in this file.
44

55
## [Unreleased]
6+
7+
8+
## [v0.7.0-beta] - 2021-08-27
9+
### Changed
10+
- Changed .yml routing system in favour of the router module. Now every route/group have to be registered directly in go structure.
11+
- Changed .yml configuration. Now system and custom configuration are located into the new config module.
12+
613
### Removed
714
- Removed Mail struct from configuration
815

9-
## [v0.6-3-beta] - 2021-08-27
16+
17+
## [v0.6.3-beta] - 2021-08-27
1018
### Fixed
1119
- Fixed cookie store issue
1220

13-
## [v0.6-2-beta] - 2021-08-27
21+
## [v0.6.2-beta] - 2021-08-27
1422
### Changed
1523
- Changed middleware architecture. Now every middleware consists in an isolated structure.
1624

17-
## [v0.6-1-beta] - 2021-08-27
25+
## [v0.6.1-beta] - 2021-08-27
1826
### Fix
1927
- Resolved command service container issue
2028

21-
## [v0.6-0-beta] - 2021-08-25
29+
## [v0.6.0-beta] - 2021-08-25
2230
### Changed
2331
- Split command line interfaces and http server.
2432

25-
## [v0.5-9-beta] - 2021-08-23
33+
## [v0.5.9-beta] - 2021-08-23
2634
### Added
2735
- Gzip compression over HTTP responses
2836

2937
### Fixed
3038
- Fixed IOC arguments order issue
3139

32-
## [v0.5-8-beta] - 2021-08-20
40+
## [v0.5.8-beta] - 2021-08-20
3341

3442
### Fixed
3543
- Fixed IOC arguments order issue
3644

37-
## [v0.5-7-beta] - 2021-08-19
45+
## [v0.5.7-beta] - 2021-08-19
3846

3947
### Fixed
4048
- Implemented command ioc container
4149

42-
## [v0.5-6-beta] - 2021-08-19
50+
## [v0.5.6-beta] - 2021-08-19
4351

4452
### Added
4553
- Merged factory and singleton container abstraction
4654

47-
## [v0.5-5-beta] - 2021-08-19
55+
## [v0.5.5-beta] - 2021-08-19
4856

4957
### Fixed
5058
- Controller raw template with right 'kernel' package
5159

52-
## [v0.5-4-beta] - 2021-07-02
60+
## [v0.5.4-beta] - 2021-07-02
5361

5462
### Added
5563
- Insert readme.md
@@ -60,13 +68,13 @@ All notable changes to the "Go-Web Framework" will be documented in this file.
6068
- Go-Web `server:run` command runs outside the IOC container.
6169
- Expose`SingletonServices`
6270

63-
## [v0.5-3-beta] - 2021-06-21
71+
## [v0.5.3-beta] - 2021-06-21
6472

6573
### Fix
6674

6775
- Fix DI by encapsulating custom services into a separate service container.
6876

69-
## [v0.5-2-beta] - 2021-06-21
77+
## [v0.5.2-beta] - 2021-06-21
7078

7179
### Added
7280

@@ -75,7 +83,7 @@ All notable changes to the "Go-Web Framework" will be documented in this file.
7583
- Implemented "DecodeJsonRequest" tool
7684
- Implemented "RunJob" tool
7785

78-
## [v0.5-1-beta] - 2021-06-16
86+
## [v0.5.1-beta] - 2021-06-16
7987

8088
### Fix
8189

application.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ type BaseEntities struct {
1919
CommandServices register.ServiceRegister
2020
Middlewares register.MiddlewareRegister
2121
Models register.ModelRegister
22+
Router []kernel.HTTRouter
2223
}
2324

2425
// Start will run the HTTP web server
25-
func Start(e BaseEntities) {
26+
func Start(e BaseEntities, c kernel.ServerConf) {
2627
startup(e)
27-
kernel.RunServer()
28+
kernel.RunServer(c, e.Router)
2829
}
2930

3031
// StartCommand method runs specific CLI command

cli/jobs_create.go

Lines changed: 0 additions & 48 deletions
This file was deleted.

ioc.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ func RetrieveSingletonContainer() *dig.Container {
1313
}
1414

1515
// RetrieveConfig provides a shortcut to retrieve the global configuration.
16-
func RetrieveConfig() *kernel.Conf {
17-
var config *kernel.Conf
18-
if err := RetrieveSingletonContainer().Invoke(func(c *kernel.Conf) {
16+
func RetrieveConfig() *kernel.ServerConf {
17+
var config *kernel.ServerConf
18+
if err := RetrieveSingletonContainer().Invoke(func(c *kernel.ServerConf) {
1919
config = c
2020
}); err != nil {
2121
log.Fatal(err)

kernel/config.go

Lines changed: 5 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,11 @@
11
package kernel
22

3-
import (
4-
"github.com/RobyFerro/go-web-framework/tool"
5-
"gopkg.in/yaml.v3"
6-
"os"
7-
)
8-
9-
// Conf represents the main configuration of Go-Web
10-
// You can implement this method if wanna implement more configuration.
11-
// Remember: this struct will be populated by parsing the config.yml file present into the Go-Web main directory.
12-
// You've to implement both to works properly.
13-
type Conf struct {
14-
Server struct {
15-
Name string `yaml:"name"`
16-
Port int `yaml:"port"`
17-
Ssl bool `yaml:"ssl"`
18-
SslCert string `yaml:"sslcert"`
19-
SslKey string `yaml:"sslkey"`
20-
RunUser string `yaml:"run-user"`
21-
RunGroup string `yaml:"run-group"`
22-
} `yaml:"server"`
23-
App struct {
24-
Key string `yaml:"key"`
25-
} `yaml:"app"`
3+
// RetrieveAppConf returns a `Conf` struct by parsing the main config.yml file.
4+
func RetrieveAppConf() *ServerConf {
5+
return config
266
}
277

28-
// RetrieveRoutingConf will parse router.yml file (present in Go-Web root dir) and return a Router structure.
8+
/*// RetrieveRoutingConf will parse router.yml file (present in Go-Web root dir) and return a Router structure.
299
// This structure will be used by the HTTP kernel to setup every routes.
3010
func RetrieveRoutingConf() (*Router, error) {
3111
var conf Router
@@ -43,23 +23,4 @@ func RetrieveRoutingConf() (*Router, error) {
4323
}
4424
4525
return &conf, nil
46-
}
47-
48-
// RetrieveAppConf returns a `Conf` struct by parsing the main config.yml file.
49-
func RetrieveAppConf() (*Conf, error) {
50-
var conf Conf
51-
confFile := tool.GetDynamicPath("config.yml")
52-
c, err := os.Open(confFile)
53-
54-
if err != nil {
55-
return nil, err
56-
}
57-
58-
decoder := yaml.NewDecoder(c)
59-
60-
if err := decoder.Decode(&conf); err != nil {
61-
return nil, err
62-
}
63-
64-
return &conf, nil
65-
}
26+
}*/

kernel/http.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ import (
1010
)
1111

1212
// CreateSessionStore creates a new session CookieStore
13-
func CreateSessionStore(cfg *Conf) *sessions.CookieStore {
14-
return sessions.NewCookieStore([]byte(os.Getenv(cfg.App.Key)))
13+
func CreateSessionStore() *sessions.CookieStore {
14+
return sessions.NewCookieStore([]byte(os.Getenv(config.Key)))
1515
}
1616

1717
// GetHttpServer prepare HTTP server for Service Container
18-
func GetHttpServer(router *mux.Router, cfg *Conf) *http.Server {
19-
serverString := fmt.Sprintf("%s:%d", cfg.Server.Name, cfg.Server.Port)
18+
func GetHttpServer(router *mux.Router, cfg ServerConf) *http.Server {
19+
serverString := fmt.Sprintf("%s:%d", cfg.Name, cfg.Port)
2020

2121
var httpServerConf = http.Server{}
2222

23-
if cfg.Server.Ssl {
23+
if cfg.SSL {
2424
sslCfg := &tls.Config{
2525
MinVersion: tls.VersionTLS12,
2626
CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256},

kernel/middleware.go

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,19 @@ package kernel
33
import (
44
"github.com/gorilla/mux"
55
"net/http"
6-
"reflect"
76
)
87

8+
type Middleware interface {
9+
Handle(next http.Handler) http.Handler
10+
}
11+
912
// Parse list of middleware and get an array of []mux.Middleware func
1013
// Required by Gorilla Mux
11-
func parseMiddleware(mwList []string) []mux.MiddlewareFunc {
14+
func parseMiddleware(mwList []Middleware) []mux.MiddlewareFunc {
1215
var midFunc []mux.MiddlewareFunc
1316

14-
for _, name := range mwList {
15-
for _, mw := range Middlewares.List {
16-
rName := reflect.ValueOf(mw).Elem().FieldByName("Name").String()
17-
18-
if name == rName {
19-
m := reflect.ValueOf(mw)
20-
method := m.MethodByName("Handle")
21-
22-
callable := method.Interface().(func(handler http.Handler) http.Handler)
23-
midFunc = append(midFunc, callable)
24-
}
25-
}
17+
for _, mw := range mwList {
18+
midFunc = append(midFunc, mw.Handle)
2619
}
2720

2821
return midFunc

kernel/register.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ var (
1717
"cmd:create": &cli.CmdCreate{},
1818
"controller:create": &cli.ControllerCreate{},
1919
"generate:key": &cli.GenerateKey{},
20-
"job:create": &cli.JobCreate{},
2120
"middleware:create": &cli.MiddlewareCreate{},
2221
"migration:create": &cli.MigrationCreate{},
2322
"migration:rollback": &cli.MigrateRollback{},

0 commit comments

Comments
 (0)