mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 03:52:24 -05:00 
			
		
		
		
	bit of experimenting and tidying
This commit is contained in:
		
					parent
					
						
							
								7590eb9cc2
							
						
					
				
			
			
				commit
				
					
						1eecc2688c
					
				
			
		
					 13 changed files with 167 additions and 109 deletions
				
			
		
							
								
								
									
										72
									
								
								internal/api/server.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								internal/api/server.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package api | ||||
| 
 | ||||
| import ( | ||||
| 	"net/http" | ||||
| 
 | ||||
| 	"github.com/gin-gonic/gin" | ||||
| 	"github.com/gotosocial/gotosocial/internal/config" | ||||
| 	"github.com/sirupsen/logrus" | ||||
| ) | ||||
| 
 | ||||
| type Server interface { | ||||
| 	AttachHTTPHandler(method string, path string, handler http.HandlerFunc) | ||||
|    AttachGinHandler(method string, path string, handler gin.HandlerFunc) | ||||
|    // AttachMiddleware(handler gin.HandlerFunc) | ||||
|    GetAPIGroup() *gin.RouterGroup | ||||
| 	Start() | ||||
| 	Stop() | ||||
| } | ||||
| 
 | ||||
| type server struct { | ||||
| 	APIGroup *gin.RouterGroup | ||||
| 	logger   *logrus.Logger | ||||
| 	engine   *gin.Engine | ||||
| } | ||||
| 
 | ||||
| func (s *server) GetAPIGroup() *gin.RouterGroup { | ||||
| 	return s.APIGroup | ||||
| } | ||||
| 
 | ||||
| func (s *server) Start() { | ||||
|    // todo: start gracefully | ||||
| 	s.engine.Run() | ||||
| } | ||||
| 
 | ||||
| func (s *server) Stop() { | ||||
|    // todo: shut down gracefully | ||||
| } | ||||
| 
 | ||||
| func (s *server) AttachHTTPHandler(method string, path string, handler http.HandlerFunc) { | ||||
|    s.engine.Handle(method, path, gin.WrapH(handler)) | ||||
| } | ||||
| 
 | ||||
| func (s *server) AttachGinHandler(method string, path string, handler gin.HandlerFunc) { | ||||
|    s.engine.Handle(method, path, handler) | ||||
| } | ||||
| 
 | ||||
| func New(config *config.Config, logger *logrus.Logger) Server { | ||||
| 	engine := gin.New() | ||||
| 	return &server{ | ||||
| 		APIGroup: engine.Group("/api").Group("/v1"), | ||||
| 		logger:   logger, | ||||
| 		engine:   engine, | ||||
| 	} | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue