mirror of
				https://github.com/eolinker/apinto
				synced 2025-10-31 20:12:56 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
 | |
|  * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
 | |
|  * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
 | |
|  * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
 | |
|  * Vestibulum commodo. Ut rhoncus gravida arcu.
 | |
|  */
 | |
| 
 | |
| package router_http
 | |
| 
 | |
| import (
 | |
| 	"github.com/eolinker/goku-eosc/router"
 | |
| 	"github.com/eolinker/goku-eosc/router/checker"
 | |
| 	"github.com/eolinker/goku-eosc/service"
 | |
| 	"sync"
 | |
| )
 | |
| var _ service.IRouterEndpoint = (*EndPoint)(nil)
 | |
| type EndPoint struct {
 | |
| 	endpoint router.IEndpoint
 | |
| 
 | |
| 
 | |
| 	headers []string
 | |
| 	queries []string
 | |
| 	once    sync.Once
 | |
| }
 | |
| 
 | |
| func (e *EndPoint) Header(name string) (checker.Checker, bool) {
 | |
| 	return 	e.endpoint.Get(toHeader(name))
 | |
| }
 | |
| 
 | |
| func (e *EndPoint) Query(name string) (checker.Checker, bool) {
 | |
| 	return e.endpoint.Get(toQuery(name))
 | |
| }
 | |
| 
 | |
| func (e *EndPoint) initCMD()  {
 | |
| 	e.once.Do(func() {
 | |
| 		cs:=e.endpoint.CMDs()
 | |
| 		e.headers =make([]string,0,len(cs))
 | |
| 		e.queries = make([]string,0,len(cs))
 | |
| 		for _,c:=range cs{
 | |
| 			if h,yes:=headerName(c);yes{
 | |
| 				e.headers = append(e.headers, h)
 | |
| 				continue
 | |
| 			}
 | |
| 			if q,yes:=queryName(c);yes{
 | |
| 				e.queries = append(e.queries, q)
 | |
| 			}
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| }
 | |
| 
 | |
| func (e *EndPoint) Headers() []string {
 | |
| 	e.initCMD()
 | |
| 	return e.headers
 | |
| }
 | |
| 
 | |
| func (e *EndPoint) Queries() []string {
 | |
| 	e.initCMD()
 | |
| 	return e.queries
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| func NewEndPoint(endpoint router.IEndpoint) *EndPoint {
 | |
| 	return &EndPoint{endpoint: endpoint}
 | |
| }
 | |
| 
 | |
| func (e *EndPoint) Location() (checker.Checker,bool) {
 | |
| 	return 	e.endpoint.Get(cmdLocation)
 | |
| }
 | |
| 
 | 
