Skip to content

Commit 7e7be7f

Browse files
committed
add openapi
1 parent 8f60426 commit 7e7be7f

File tree

5 files changed

+116
-0
lines changed

5 files changed

+116
-0
lines changed

init.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
_ "github.com/APIParkLab/APIPark/frontend"
66
_ "github.com/APIParkLab/APIPark/gateway/apinto"
77
_ "github.com/APIParkLab/APIPark/plugins/core"
8+
_ "github.com/APIParkLab/APIPark/plugins/openapi"
89
_ "github.com/APIParkLab/APIPark/plugins/permit"
910
_ "github.com/APIParkLab/APIPark/plugins/publish_flow"
1011
_ "github.com/APIParkLab/APIPark/resources/locale"

plugins/openapi/authorization.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package openapi
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/eolinker/go-common/pm3"
7+
)
8+
9+
func (p *plugin) appAuthorizationApis() []pm3.Api {
10+
return []pm3.Api{
11+
pm3.CreateApiWidthDoc(http.MethodPost, "/openapi/v1/app/authorization", []string{"context", "query:app", "body"}, []string{"authorization"}, p.authorizationController.AddAuthorization),
12+
pm3.CreateApiWidthDoc(http.MethodPut, "/openapi/v1/app/authorization", []string{"context", "query:app", "query:authorization", "body"}, []string{"authorization"}, p.authorizationController.EditAuthorization),
13+
pm3.CreateApiWidthDoc(http.MethodDelete, "/openapi/v1/app/authorization", []string{"context", "query:app", "query:authorization"}, nil, p.authorizationController.DeleteAuthorization),
14+
pm3.CreateApiWidthDoc(http.MethodGet, "/openapi/v1/app/authorization", []string{"context", "query:app", "query:authorization"}, []string{"authorization"}, p.authorizationController.Info),
15+
pm3.CreateApiWidthDoc(http.MethodGet, "/openapi/v1/app/authorizations", []string{"context", "query:app"}, []string{"authorizations"}, p.authorizationController.Authorizations),
16+
pm3.CreateApiWidthDoc(http.MethodGet, "/openapi/v1/app/authorization/details", []string{"context", "query:app", "query:authorization"}, []string{"details"}, p.authorizationController.Detail),
17+
}
18+
}

plugins/openapi/check.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package openapi
2+
3+
import (
4+
"strings"
5+
6+
"github.com/eolinker/eosc/env"
7+
8+
"github.com/gin-gonic/gin"
9+
)
10+
11+
var (
12+
defaultAPIKey = "37eb0ebf"
13+
openCheck = newOpenapiCheck()
14+
)
15+
16+
type openapiCheck struct {
17+
apikey string
18+
}
19+
20+
func newOpenapiCheck() *openapiCheck {
21+
apikey, has := env.GetEnv("API_KEY")
22+
if !has {
23+
apikey = defaultAPIKey
24+
}
25+
return &openapiCheck{apikey: apikey}
26+
}
27+
28+
func (o *openapiCheck) Check(method string, path string) (bool, []gin.HandlerFunc) {
29+
if strings.HasPrefix(path, "/openapi/") {
30+
return true, []gin.HandlerFunc{o.Handler}
31+
}
32+
return false, nil
33+
}
34+
35+
func (o *openapiCheck) Sort() int {
36+
return -1
37+
}
38+
39+
func (o *openapiCheck) Handler(ginCtx *gin.Context) {
40+
authorization := ginCtx.GetHeader("Authorization")
41+
if authorization == "" {
42+
ginCtx.AbortWithStatusJSON(403, gin.H{"code": -8, "msg": "invalid token", "success": "fail"})
43+
return
44+
}
45+
}

plugins/openapi/driver.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package openapi
2+
3+
import (
4+
"github.com/eolinker/go-common/autowire"
5+
"github.com/eolinker/go-common/pm3"
6+
)
7+
8+
func init() {
9+
pm3.Register("openapi", new(Driver))
10+
}
11+
12+
type Driver struct {
13+
}
14+
15+
func (d *Driver) Create() (pm3.IPlugin, error) {
16+
p := new(plugin)
17+
autowire.Autowired(p)
18+
return p, nil
19+
}

plugins/openapi/plugin.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package openapi
2+
3+
import (
4+
application_authorization "github.com/APIParkLab/APIPark/controller/application-authorization"
5+
"github.com/eolinker/go-common/pm3"
6+
)
7+
8+
var (
9+
_ pm3.IPlugin = (*plugin)(nil)
10+
_ pm3.IPluginMiddleware = (*plugin)(nil)
11+
)
12+
13+
type plugin struct {
14+
apis []pm3.Api
15+
authorizationController application_authorization.IAuthorizationController `autowired:""`
16+
}
17+
18+
func (p *plugin) Middlewares() []pm3.IMiddleware {
19+
return []pm3.IMiddleware{
20+
openCheck,
21+
}
22+
}
23+
24+
func (p *plugin) APis() []pm3.Api {
25+
return p.apis
26+
}
27+
28+
func (p *plugin) Name() string {
29+
return "openapi"
30+
}
31+
func (p *plugin) OnComplete() {
32+
p.apis = p.appAuthorizationApis()
33+
}

0 commit comments

Comments
 (0)