Container: Add Gin web service provider
This commit is contained in:
		
							
								
								
									
										3
									
								
								providers/webserver/contract.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								providers/webserver/contract.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
package webserver
 | 
			
		||||
 | 
			
		||||
const WebSrvName = "srv:gin"
 | 
			
		||||
							
								
								
									
										25
									
								
								providers/webserver/provider.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								providers/webserver/provider.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
package webserver
 | 
			
		||||
 | 
			
		||||
import "git.vinchent.xyz/vinchent/go-web/framework"
 | 
			
		||||
 | 
			
		||||
type WebSrvProvider struct{}
 | 
			
		||||
 | 
			
		||||
func (p *WebSrvProvider) Name() string {
 | 
			
		||||
	return WebSrvName
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *WebSrvProvider) Register(c framework.Container) framework.NewInstance {
 | 
			
		||||
	return NewGoWebGin
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *WebSrvProvider) Init(c framework.Container) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *WebSrvProvider) InstantiateLater() bool {
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *WebSrvProvider) Params(c framework.Container) []interface{} {
 | 
			
		||||
	return []interface{}{c}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								providers/webserver/service.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								providers/webserver/service.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
package webserver
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.vinchent.xyz/vinchent/go-web/framework"
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type GoWebGin struct {
 | 
			
		||||
	container framework.Container
 | 
			
		||||
	Engine    *gin.Engine
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewGoWebGin(params ...interface{}) (interface{}, error) {
 | 
			
		||||
	paramsLen := len(params)
 | 
			
		||||
	container := params[0].(framework.Container)
 | 
			
		||||
 | 
			
		||||
	ginOpts := make([]gin.OptionFunc, paramsLen-1)
 | 
			
		||||
	for _, param := range params[1:] {
 | 
			
		||||
		ginOpts = append(ginOpts, param.(gin.OptionFunc))
 | 
			
		||||
	}
 | 
			
		||||
	return &GoWebGin{
 | 
			
		||||
		container: container,
 | 
			
		||||
		Engine:    gin.New(ginOpts...),
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user