mirror of
				https://github.com/therootcompany/telebit.git
				synced 2025-11-04 07:12:52 +00:00 
			
		
		
		
	updates to admin stats
This commit is contained in:
		
							parent
							
								
									025fa5da6b
								
							
						
					
					
						commit
						d5b2837033
					
				@ -80,7 +80,8 @@ func InitAdmin(authURL string) {
 | 
				
			|||||||
			})
 | 
								})
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		r.Get("/subscribers", getSubscribers)
 | 
							r.Get("/subscribers", getAllSubscribers)
 | 
				
			||||||
 | 
							r.Get("/subscribers/{subject}", getSubscribers)
 | 
				
			||||||
		r.Delete("/subscribers/{subject}", delSubscribers)
 | 
							r.Delete("/subscribers/{subject}", delSubscribers)
 | 
				
			||||||
		r.NotFound(apiNotFoundHandler)
 | 
							r.NotFound(apiNotFoundHandler)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@ -115,17 +116,51 @@ type SubscriberStatus struct {
 | 
				
			|||||||
	// TODO bytes read
 | 
						// TODO bytes read
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getSubscribers(w http.ResponseWriter, r *http.Request) {
 | 
					func getAllSubscribers(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
	statuses := []*SubscriberStatus{}
 | 
						statuses := []*SubscriberStatus{}
 | 
				
			||||||
	table.Servers.Range(func(key, value interface{}) bool {
 | 
						table.Servers.Range(func(key, value interface{}) bool {
 | 
				
			||||||
 | 
							srvMap := value.(*sync.Map)
 | 
				
			||||||
 | 
							status := getSubscribersHelper(srvMap)
 | 
				
			||||||
 | 
							statuses = append(statuses, status)
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						_ = json.NewEncoder(w).Encode(&struct {
 | 
				
			||||||
 | 
							Success     bool                `json:"success"`
 | 
				
			||||||
 | 
							Subscribers []*SubscriberStatus `json:"subscribers"`
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							Success:     true,
 | 
				
			||||||
 | 
							Subscribers: statuses,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getSubscribers(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
						subject := chi.URLParam(r, "subject")
 | 
				
			||||||
 | 
						statuses := &struct {
 | 
				
			||||||
 | 
							Success     bool                `json:"success"`
 | 
				
			||||||
 | 
							Subscribers []*SubscriberStatus `json:"subscribers"`
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							Success:     true,
 | 
				
			||||||
 | 
							Subscribers: []*SubscriberStatus{},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var srvMap *sync.Map
 | 
				
			||||||
 | 
						srvMapX, ok := table.Servers.Load(subject)
 | 
				
			||||||
 | 
						if ok {
 | 
				
			||||||
 | 
							srvMap = srvMapX.(*sync.Map)
 | 
				
			||||||
 | 
							statuses.Subscribers = append(statuses.Subscribers, getSubscribersHelper(srvMap))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_ = json.NewEncoder(w).Encode(statuses)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getSubscribersHelper(srvMap *sync.Map) *SubscriberStatus {
 | 
				
			||||||
	status := &SubscriberStatus{
 | 
						status := &SubscriberStatus{
 | 
				
			||||||
		Since:   nil,
 | 
							Since:   nil,
 | 
				
			||||||
		Subject: "",
 | 
							Subject: "",
 | 
				
			||||||
		Sockets: []string{},
 | 
							Sockets: []string{},
 | 
				
			||||||
		Clients: 0,
 | 
							Clients: 0,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
		//subject := key.(string)
 | 
					
 | 
				
			||||||
		srvMap := value.(*sync.Map)
 | 
					 | 
				
			||||||
	srvMap.Range(func(k, v interface{}) bool {
 | 
						srvMap.Range(func(k, v interface{}) bool {
 | 
				
			||||||
		status.Sockets = append(status.Sockets, k.(string))
 | 
							status.Sockets = append(status.Sockets, k.(string))
 | 
				
			||||||
		srv := v.(*table.SubscriberConn)
 | 
							srv := v.(*table.SubscriberConn)
 | 
				
			||||||
@ -141,16 +176,8 @@ func getSubscribers(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		return true
 | 
							return true
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
		statuses = append(statuses, status)
 | 
					
 | 
				
			||||||
		return true
 | 
						return status
 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	_ = json.NewEncoder(w).Encode(&struct {
 | 
					 | 
				
			||||||
		Success     bool                `json:"success"`
 | 
					 | 
				
			||||||
		Subscribers []*SubscriberStatus `json:"subscribers"`
 | 
					 | 
				
			||||||
	}{
 | 
					 | 
				
			||||||
		Success:     true,
 | 
					 | 
				
			||||||
		Subscribers: statuses,
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func delSubscribers(w http.ResponseWriter, r *http.Request) {
 | 
					func delSubscribers(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user