mirror of
				https://github.com/TeaOSLab/EdgeCommon.git
				synced 2025-11-04 13:10:24 +08:00 
			
		
		
		
	
		
			
	
	
		
			42 lines
		
	
	
		
			875 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			875 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package shared
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"github.com/iwind/TeaGo/maps"
							 | 
						||
| 
								 | 
							
									"net/http"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 请求调用
							 | 
						||
| 
								 | 
							
								type RequestCall struct {
							 | 
						||
| 
								 | 
							
									Formatter         func(source string) string
							 | 
						||
| 
								 | 
							
									Request           *http.Request
							 | 
						||
| 
								 | 
							
									ResponseCallbacks []func(resp http.ResponseWriter)
							 | 
						||
| 
								 | 
							
									Options           maps.Map
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 获取新对象
							 | 
						||
| 
								 | 
							
								func NewRequestCall() *RequestCall {
							 | 
						||
| 
								 | 
							
									return &RequestCall{
							 | 
						||
| 
								 | 
							
										Options: maps.Map{},
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 重置
							 | 
						||
| 
								 | 
							
								func (this *RequestCall) Reset() {
							 | 
						||
| 
								 | 
							
									this.Formatter = nil
							 | 
						||
| 
								 | 
							
									this.Request = nil
							 | 
						||
| 
								 | 
							
									this.ResponseCallbacks = nil
							 | 
						||
| 
								 | 
							
									this.Options = maps.Map{}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 添加响应回调
							 | 
						||
| 
								 | 
							
								func (this *RequestCall) AddResponseCall(callback func(resp http.ResponseWriter)) {
							 | 
						||
| 
								 | 
							
									this.ResponseCallbacks = append(this.ResponseCallbacks, callback)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 执行响应回调
							 | 
						||
| 
								 | 
							
								func (this *RequestCall) CallResponseCallbacks(resp http.ResponseWriter) {
							 | 
						||
| 
								 | 
							
									for _, callback := range this.ResponseCallbacks {
							 | 
						||
| 
								 | 
							
										callback(resp)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |