Skip to content

Commit d9c4f6c

Browse files
committed
added CORS methods
1 parent bb93728 commit d9c4f6c

File tree

4 files changed

+259
-51
lines changed

4 files changed

+259
-51
lines changed

coverage.out

Lines changed: 58 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
mode: set
2+
github.com/GolangToolKits/grrt/router.go:25.25,28.2 2 1
3+
github.com/GolangToolKits/grrt/router.go:31.46,33.49 2 1
4+
github.com/GolangToolKits/grrt/router.go:36.2,36.12 1 1
5+
github.com/GolangToolKits/grrt/router.go:33.49,35.3 1 1
26
github.com/GolangToolKits/grrt/reqRoute.go:28.32,32.2 3 1
37
github.com/GolangToolKits/grrt/reqRoute.go:35.56,36.14 1 1
48
github.com/GolangToolKits/grrt/reqRoute.go:39.2,39.10 1 1
@@ -88,51 +92,57 @@ github.com/GolangToolKits/grrt/reqRoute.go:273.14,274.41 1 1
8892
github.com/GolangToolKits/grrt/reqRoute.go:274.41,276.4 1 1
8993
github.com/GolangToolKits/grrt/reqRoute.go:278.8,280.3 1 1
9094
github.com/GolangToolKits/grrt/reqRoute.go:284.55,288.2 3 1
91-
github.com/GolangToolKits/grrt/reqRouter.go:28.70,34.15 3 1
92-
github.com/GolangToolKits/grrt/reqRouter.go:42.2,42.33 1 1
93-
github.com/GolangToolKits/grrt/reqRouter.go:34.15,37.22 3 1
94-
github.com/GolangToolKits/grrt/reqRouter.go:37.22,40.4 1 1
95-
github.com/GolangToolKits/grrt/reqRouter.go:42.33,44.3 1 1
96-
github.com/GolangToolKits/grrt/reqRouter.go:44.8,44.42 1 1
97-
github.com/GolangToolKits/grrt/reqRouter.go:44.42,46.3 1 1
98-
github.com/GolangToolKits/grrt/reqRouter.go:46.8,49.3 2 1
99-
github.com/GolangToolKits/grrt/reqRouter.go:53.37,57.2 3 1
100-
github.com/GolangToolKits/grrt/reqRouter.go:60.68,63.16 3 1
101-
github.com/GolangToolKits/grrt/reqRouter.go:77.2,77.11 1 1
102-
github.com/GolangToolKits/grrt/reqRouter.go:63.16,65.3 1 1
103-
github.com/GolangToolKits/grrt/reqRouter.go:65.8,67.28 2 1
104-
github.com/GolangToolKits/grrt/reqRouter.go:73.3,73.12 1 1
105-
github.com/GolangToolKits/grrt/reqRouter.go:67.28,68.55 1 1
106-
github.com/GolangToolKits/grrt/reqRouter.go:68.55,71.5 2 1
107-
github.com/GolangToolKits/grrt/reqRouter.go:73.12,75.4 1 1
108-
github.com/GolangToolKits/grrt/reqRouter.go:81.94,84.16 3 1
109-
github.com/GolangToolKits/grrt/reqRouter.go:98.2,98.11 1 1
110-
github.com/GolangToolKits/grrt/reqRouter.go:84.16,86.3 1 1
111-
github.com/GolangToolKits/grrt/reqRouter.go:86.8,88.28 2 1
112-
github.com/GolangToolKits/grrt/reqRouter.go:94.3,94.12 1 1
113-
github.com/GolangToolKits/grrt/reqRouter.go:88.28,89.55 1 1
114-
github.com/GolangToolKits/grrt/reqRouter.go:89.55,92.5 2 1
115-
github.com/GolangToolKits/grrt/reqRouter.go:94.12,96.4 1 1
116-
github.com/GolangToolKits/grrt/reqRouter.go:102.48,105.16 3 1
117-
github.com/GolangToolKits/grrt/reqRouter.go:108.2,108.11 1 1
118-
github.com/GolangToolKits/grrt/reqRouter.go:105.16,107.3 1 1
119-
github.com/GolangToolKits/grrt/reqRouter.go:111.48,115.2 3 1
120-
github.com/GolangToolKits/grrt/reqRouter.go:117.69,125.23 8 1
121-
github.com/GolangToolKits/grrt/reqRouter.go:146.2,146.19 1 1
122-
github.com/GolangToolKits/grrt/reqRouter.go:125.23,126.13 1 1
123-
github.com/GolangToolKits/grrt/reqRouter.go:131.3,133.17 3 1
124-
github.com/GolangToolKits/grrt/reqRouter.go:126.13,127.12 1 1
125-
github.com/GolangToolKits/grrt/reqRouter.go:128.9,128.19 1 1
126-
github.com/GolangToolKits/grrt/reqRouter.go:128.19,129.9 1 1
127-
github.com/GolangToolKits/grrt/reqRouter.go:133.17,134.28 1 1
128-
github.com/GolangToolKits/grrt/reqRouter.go:134.28,135.38 1 1
129-
github.com/GolangToolKits/grrt/reqRouter.go:135.38,139.11 4 1
130-
github.com/GolangToolKits/grrt/reqRouter.go:142.9,144.4 1 1
131-
github.com/GolangToolKits/grrt/reqRouter.go:149.95,151.36 2 1
132-
github.com/GolangToolKits/grrt/reqRouter.go:156.2,157.27 2 1
133-
github.com/GolangToolKits/grrt/reqRouter.go:151.36,152.32 1 1
134-
github.com/GolangToolKits/grrt/reqRouter.go:152.32,154.4 1 1
135-
github.com/GolangToolKits/grrt/router.go:19.25,22.2 2 1
136-
github.com/GolangToolKits/grrt/router.go:25.46,27.49 2 1
137-
github.com/GolangToolKits/grrt/router.go:30.2,30.12 1 1
138-
github.com/GolangToolKits/grrt/router.go:27.49,29.3 1 1
95+
github.com/GolangToolKits/grrt/reqRouter.go:31.70,37.15 3 1
96+
github.com/GolangToolKits/grrt/reqRouter.go:45.2,45.33 1 1
97+
github.com/GolangToolKits/grrt/reqRouter.go:37.15,40.22 3 1
98+
github.com/GolangToolKits/grrt/reqRouter.go:40.22,43.4 1 1
99+
github.com/GolangToolKits/grrt/reqRouter.go:45.33,47.3 1 1
100+
github.com/GolangToolKits/grrt/reqRouter.go:47.8,47.42 1 1
101+
github.com/GolangToolKits/grrt/reqRouter.go:47.42,49.3 1 1
102+
github.com/GolangToolKits/grrt/reqRouter.go:49.8,52.3 2 1
103+
github.com/GolangToolKits/grrt/reqRouter.go:56.37,60.2 3 1
104+
github.com/GolangToolKits/grrt/reqRouter.go:63.68,66.16 3 1
105+
github.com/GolangToolKits/grrt/reqRouter.go:80.2,80.11 1 1
106+
github.com/GolangToolKits/grrt/reqRouter.go:66.16,68.3 1 1
107+
github.com/GolangToolKits/grrt/reqRouter.go:68.8,70.28 2 1
108+
github.com/GolangToolKits/grrt/reqRouter.go:76.3,76.12 1 1
109+
github.com/GolangToolKits/grrt/reqRouter.go:70.28,71.55 1 1
110+
github.com/GolangToolKits/grrt/reqRouter.go:71.55,74.5 2 1
111+
github.com/GolangToolKits/grrt/reqRouter.go:76.12,78.4 1 1
112+
github.com/GolangToolKits/grrt/reqRouter.go:84.94,87.16 3 1
113+
github.com/GolangToolKits/grrt/reqRouter.go:101.2,101.11 1 1
114+
github.com/GolangToolKits/grrt/reqRouter.go:87.16,89.3 1 1
115+
github.com/GolangToolKits/grrt/reqRouter.go:89.8,91.28 2 1
116+
github.com/GolangToolKits/grrt/reqRouter.go:97.3,97.12 1 1
117+
github.com/GolangToolKits/grrt/reqRouter.go:91.28,92.55 1 1
118+
github.com/GolangToolKits/grrt/reqRouter.go:92.55,95.5 2 1
119+
github.com/GolangToolKits/grrt/reqRouter.go:97.12,99.4 1 1
120+
github.com/GolangToolKits/grrt/reqRouter.go:105.48,108.16 3 1
121+
github.com/GolangToolKits/grrt/reqRouter.go:111.2,111.11 1 1
122+
github.com/GolangToolKits/grrt/reqRouter.go:108.16,110.3 1 1
123+
github.com/GolangToolKits/grrt/reqRouter.go:115.33,117.2 1 1
124+
github.com/GolangToolKits/grrt/reqRouter.go:120.56,121.28 1 1
125+
github.com/GolangToolKits/grrt/reqRouter.go:121.28,123.20 2 1
126+
github.com/GolangToolKits/grrt/reqRouter.go:126.3,126.55 1 1
127+
github.com/GolangToolKits/grrt/reqRouter.go:123.20,124.12 1 1
128+
github.com/GolangToolKits/grrt/reqRouter.go:131.53,133.2 1 1
129+
github.com/GolangToolKits/grrt/reqRouter.go:136.53,137.28 1 1
130+
github.com/GolangToolKits/grrt/reqRouter.go:137.28,139.20 2 1
131+
github.com/GolangToolKits/grrt/reqRouter.go:142.3,142.55 1 1
132+
github.com/GolangToolKits/grrt/reqRouter.go:139.20,140.12 1 1
133+
github.com/GolangToolKits/grrt/reqRouter.go:146.48,150.2 3 1
134+
github.com/GolangToolKits/grrt/reqRouter.go:152.69,160.23 8 1
135+
github.com/GolangToolKits/grrt/reqRouter.go:181.2,181.19 1 1
136+
github.com/GolangToolKits/grrt/reqRouter.go:160.23,161.13 1 1
137+
github.com/GolangToolKits/grrt/reqRouter.go:166.3,168.17 3 1
138+
github.com/GolangToolKits/grrt/reqRouter.go:161.13,162.12 1 1
139+
github.com/GolangToolKits/grrt/reqRouter.go:163.9,163.19 1 1
140+
github.com/GolangToolKits/grrt/reqRouter.go:163.19,164.9 1 1
141+
github.com/GolangToolKits/grrt/reqRouter.go:168.17,169.28 1 1
142+
github.com/GolangToolKits/grrt/reqRouter.go:169.28,170.38 1 1
143+
github.com/GolangToolKits/grrt/reqRouter.go:170.38,174.11 4 1
144+
github.com/GolangToolKits/grrt/reqRouter.go:177.9,179.4 1 1
145+
github.com/GolangToolKits/grrt/reqRouter.go:184.95,186.36 2 1
146+
github.com/GolangToolKits/grrt/reqRouter.go:191.2,192.27 2 1
147+
github.com/GolangToolKits/grrt/reqRouter.go:186.36,187.32 1 1
148+
github.com/GolangToolKits/grrt/reqRouter.go:187.32,189.4 1 1

reqRouter.go

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ const (
1919

2020
// ReqRouter RequestRouter
2121
type ReqRouter struct {
22-
namedRoutes map[string]*[]Route
23-
prefixRoutes map[string]Route
24-
corsEnabled bool
22+
namedRoutes map[string]*[]Route
23+
prefixRoutes map[string]Route
24+
corsEnabled bool
25+
allowedHeaders []string
26+
allowedOrigins []string
27+
allowedMethods []string
2528
}
2629

2730
// ServeHTTP ServeHTTP dispatches the handler registered in the matched route.
@@ -113,6 +116,33 @@ func (t ReqRouter) EnableCORS() {
113116
t.corsEnabled = true
114117
}
115118

119+
// SetAllowedHeaders SetAllowedHeaders
120+
func (t ReqRouter) SetAllowedHeaders(headers []string) {
121+
for _, v := range headers {
122+
nHeader := http.CanonicalHeaderKey(strings.TrimSpace(v))
123+
if nHeader == "" {
124+
continue
125+
}
126+
t.allowedHeaders = append(t.allowedHeaders, nHeader)
127+
}
128+
}
129+
130+
// AllowedOrigins AllowedOrigins
131+
func (t ReqRouter) AllowedOrigins(origins []string) {
132+
t.allowedOrigins = origins
133+
}
134+
135+
// AllowedMethods AllowedMethods
136+
func (t ReqRouter) AllowedMethods(methods []string) {
137+
for _, v := range methods {
138+
nMethod := strings.ToUpper(strings.TrimSpace(v))
139+
if nMethod == "" {
140+
continue
141+
}
142+
t.allowedMethods = append(t.allowedMethods, nMethod)
143+
}
144+
}
145+
116146
func (t ReqRouter) findPrefix(px string) Route {
117147
var rtn Route
118148
rtn = t.prefixRoutes[px]

reqRouter_test.go

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,3 +740,168 @@ func TestReqRouter_findPrefix(t *testing.T) {
740740
})
741741
}
742742
}
743+
744+
func TestReqRouter_SetAllowedHeaders(t *testing.T) {
745+
type fields struct {
746+
namedRoutes map[string]*[]Route
747+
prefixRoutes map[string]Route
748+
corsEnabled bool
749+
allowedHeaders []string
750+
allowedOrigins []string
751+
allowedMethods []string
752+
}
753+
type args struct {
754+
headers []string
755+
}
756+
tests := []struct {
757+
name string
758+
fields fields
759+
args args
760+
}{
761+
// TODO: Add test cases.
762+
{
763+
name: "test 1",
764+
fields: fields{
765+
allowedHeaders: []string{"Content-Type"},
766+
},
767+
args: args{
768+
headers: []string{"Content-Type", ""},
769+
},
770+
},
771+
}
772+
for _, tt := range tests {
773+
t.Run(tt.name, func(t *testing.T) {
774+
tr := ReqRouter{
775+
namedRoutes: tt.fields.namedRoutes,
776+
prefixRoutes: tt.fields.prefixRoutes,
777+
corsEnabled: tt.fields.corsEnabled,
778+
allowedHeaders: tt.fields.allowedHeaders,
779+
allowedOrigins: tt.fields.allowedOrigins,
780+
allowedMethods: tt.fields.allowedMethods,
781+
}
782+
tr.SetAllowedHeaders(tt.args.headers)
783+
})
784+
}
785+
}
786+
787+
func TestReqRouter_EnableCORS(t *testing.T) {
788+
type fields struct {
789+
namedRoutes map[string]*[]Route
790+
prefixRoutes map[string]Route
791+
corsEnabled bool
792+
allowedHeaders []string
793+
allowedOrigins []string
794+
allowedMethods []string
795+
}
796+
tests := []struct {
797+
name string
798+
fields fields
799+
}{
800+
// TODO: Add test cases.
801+
{
802+
name: "test 1",
803+
fields: fields{
804+
corsEnabled: true,
805+
},
806+
},
807+
}
808+
for _, tt := range tests {
809+
t.Run(tt.name, func(t *testing.T) {
810+
tr := ReqRouter{
811+
namedRoutes: tt.fields.namedRoutes,
812+
prefixRoutes: tt.fields.prefixRoutes,
813+
corsEnabled: tt.fields.corsEnabled,
814+
allowedHeaders: tt.fields.allowedHeaders,
815+
allowedOrigins: tt.fields.allowedOrigins,
816+
allowedMethods: tt.fields.allowedMethods,
817+
}
818+
tr.EnableCORS()
819+
})
820+
}
821+
}
822+
823+
func TestReqRouter_AllowedOrigins(t *testing.T) {
824+
type fields struct {
825+
namedRoutes map[string]*[]Route
826+
prefixRoutes map[string]Route
827+
corsEnabled bool
828+
allowedHeaders []string
829+
allowedOrigins []string
830+
allowedMethods []string
831+
}
832+
type args struct {
833+
origins []string
834+
}
835+
tests := []struct {
836+
name string
837+
fields fields
838+
args args
839+
}{
840+
// TODO: Add test cases.
841+
{
842+
name: "test 1",
843+
fields: fields{
844+
allowedOrigins: []string{"test"},
845+
},
846+
args: args{
847+
origins: []string{"*"},
848+
},
849+
},
850+
}
851+
for _, tt := range tests {
852+
t.Run(tt.name, func(t *testing.T) {
853+
tr := ReqRouter{
854+
namedRoutes: tt.fields.namedRoutes,
855+
prefixRoutes: tt.fields.prefixRoutes,
856+
corsEnabled: tt.fields.corsEnabled,
857+
allowedHeaders: tt.fields.allowedHeaders,
858+
allowedOrigins: tt.fields.allowedOrigins,
859+
allowedMethods: tt.fields.allowedMethods,
860+
}
861+
tr.AllowedOrigins(tt.args.origins)
862+
})
863+
}
864+
}
865+
866+
func TestReqRouter_AllowedMethods(t *testing.T) {
867+
type fields struct {
868+
namedRoutes map[string]*[]Route
869+
prefixRoutes map[string]Route
870+
corsEnabled bool
871+
allowedHeaders []string
872+
allowedOrigins []string
873+
allowedMethods []string
874+
}
875+
type args struct {
876+
methods []string
877+
}
878+
tests := []struct {
879+
name string
880+
fields fields
881+
args args
882+
}{
883+
// TODO: Add test cases.
884+
{
885+
name: "test 1",
886+
fields: fields{
887+
allowedMethods: []string{},
888+
},
889+
args: args{
890+
methods: []string{"POST", ""},
891+
},
892+
},
893+
}
894+
for _, tt := range tests {
895+
t.Run(tt.name, func(t *testing.T) {
896+
tr := ReqRouter{
897+
namedRoutes: tt.fields.namedRoutes,
898+
prefixRoutes: tt.fields.prefixRoutes,
899+
corsEnabled: tt.fields.corsEnabled,
900+
allowedHeaders: tt.fields.allowedHeaders,
901+
allowedOrigins: tt.fields.allowedOrigins,
902+
allowedMethods: tt.fields.allowedMethods,
903+
}
904+
tr.AllowedMethods(tt.args.methods)
905+
})
906+
}
907+
}

router.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ type Router interface {
1616

1717
//CORS methods
1818
EnableCORS()
19+
SetAllowedHeaders(headers []string)
20+
AllowedOrigins(origins []string)
21+
AllowedMethods(methods []string)
1922
}
2023

2124
// NewRouter NewRouter creates new Router

0 commit comments

Comments
 (0)