@@ -2,87 +2,74 @@ package shiftapi
22
33import "net/http"
44
5- func Get [RequestBody ValidBody , ResponseBody ValidBody ](
5+ func method [RequestBody ValidBody , ResponseBody ValidBody ](
6+ method string ,
67 path string ,
78 handlerFunc HandlerFunc [RequestBody , ResponseBody ],
8- options ... func ( HandlerFunc [ RequestBody , ResponseBody ]) HandlerFunc [ RequestBody , ResponseBody ] ,
9- ) Handler {
10- return & handler [RequestBody , ResponseBody ]{
11- method : http . MethodGet ,
9+ options ... HandlerOption ,
10+ ) * handler [ RequestBody , ResponseBody ] {
11+ h := & handler [RequestBody , ResponseBody ]{
12+ method : method ,
1213 path : path ,
1314 handlerFunc : handlerFunc ,
14- options : options ,
1515 }
16+ for _ , option := range options {
17+ option (h )
18+ }
19+ return h
20+ }
21+
22+ func Get [RequestBody ValidBody , ResponseBody ValidBody ](
23+ path string ,
24+ handlerFunc HandlerFunc [RequestBody , ResponseBody ],
25+ options ... HandlerOption ,
26+ ) * handler [RequestBody , ResponseBody ] {
27+ return method (http .MethodGet , path , handlerFunc , options ... )
1628}
1729
1830func Post [RequestBody ValidBody , ResponseBody ValidBody ](
1931 path string ,
2032 handlerFunc HandlerFunc [RequestBody , ResponseBody ],
21- options ... func (HandlerFunc [RequestBody , ResponseBody ]) HandlerFunc [RequestBody , ResponseBody ],
22- ) Handler {
23- return & handler [RequestBody , ResponseBody ]{
24- method : http .MethodPost ,
25- path : path ,
26- handlerFunc : handlerFunc ,
27- options : options ,
28- }
33+ options ... HandlerOption ,
34+ ) * handler [RequestBody , ResponseBody ] {
35+ return method (http .MethodPost , path , handlerFunc , options ... )
2936}
3037
3138func Put [RequestBody ValidBody , ResponseBody ValidBody ](
3239 path string ,
3340 handlerFunc HandlerFunc [RequestBody , ResponseBody ],
34- options ... func (HandlerFunc [RequestBody , ResponseBody ]) HandlerFunc [RequestBody , ResponseBody ],
35- ) Handler {
36- return & handler [RequestBody , ResponseBody ]{
37- method : http .MethodPut ,
38- path : path ,
39- handlerFunc : handlerFunc ,
40- }
41+ options ... HandlerOption ,
42+ ) * handler [RequestBody , ResponseBody ] {
43+ return method (http .MethodPut , path , handlerFunc , options ... )
4144}
4245func Patch [RequestBody ValidBody , ResponseBody ValidBody ](
4346 path string ,
4447 handlerFunc HandlerFunc [RequestBody , ResponseBody ],
45- options ... func (HandlerFunc [RequestBody , ResponseBody ]) HandlerFunc [RequestBody , ResponseBody ],
46- ) Handler {
47- return & handler [RequestBody , ResponseBody ]{
48- method : http .MethodPatch ,
49- path : path ,
50- handlerFunc : handlerFunc ,
51- }
48+ options ... HandlerOption ,
49+ ) * handler [RequestBody , ResponseBody ] {
50+ return method (http .MethodPatch , path , handlerFunc , options ... )
5251}
5352
5453func Delete [RequestBody ValidBody , ResponseBody ValidBody ](
5554 path string ,
5655 handlerFunc HandlerFunc [RequestBody , ResponseBody ],
57- options ... func (HandlerFunc [RequestBody , ResponseBody ]) HandlerFunc [RequestBody , ResponseBody ],
58- ) Handler {
59- return & handler [RequestBody , ResponseBody ]{
60- method : http .MethodDelete ,
61- path : path ,
62- handlerFunc : handlerFunc ,
63- }
56+ options ... HandlerOption ,
57+ ) * handler [RequestBody , ResponseBody ] {
58+ return method (http .MethodDelete , path , handlerFunc , options ... )
6459}
6560
6661func Head [RequestBody ValidBody , ResponseBody ValidBody ](
6762 path string ,
6863 handlerFunc HandlerFunc [RequestBody , ResponseBody ],
69- options ... func (HandlerFunc [RequestBody , ResponseBody ]) HandlerFunc [RequestBody , ResponseBody ],
70- ) Handler {
71- return & handler [RequestBody , ResponseBody ]{
72- method : http .MethodHead ,
73- path : path ,
74- handlerFunc : handlerFunc ,
75- }
64+ options ... HandlerOption ,
65+ ) * handler [RequestBody , ResponseBody ] {
66+ return method (http .MethodHead , path , handlerFunc , options ... )
7667}
7768
7869func Options [RequestBody ValidBody , ResponseBody ValidBody ](
7970 path string ,
8071 handlerFunc HandlerFunc [RequestBody , ResponseBody ],
81- options ... func (HandlerFunc [RequestBody , ResponseBody ]) HandlerFunc [RequestBody , ResponseBody ],
82- ) Handler {
83- return & handler [RequestBody , ResponseBody ]{
84- method : http .MethodOptions ,
85- path : path ,
86- handlerFunc : handlerFunc ,
87- }
72+ options ... HandlerOption ,
73+ ) * handler [RequestBody , ResponseBody ] {
74+ return method (http .MethodOptions , path , handlerFunc , options ... )
8875}
0 commit comments