added simple cache system.
This commit is contained in:
		@@ -20,7 +20,7 @@ type Channel struct {
 | 
			
		||||
	Nonce              string      `json:"nonce"`
 | 
			
		||||
	Active             bool        `json:"active"`
 | 
			
		||||
	Recipients         []string    `json:"recipients"`
 | 
			
		||||
	LastMessage        string      `json:"last_message"`
 | 
			
		||||
	LastMessage        interface{} `json:"last_message"`
 | 
			
		||||
	Name               string      `json:"name"`
 | 
			
		||||
	OwnerId            string      `json:"owner"`
 | 
			
		||||
	Description        string      `json:"description"`
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ type Client struct {
 | 
			
		||||
	Token   string
 | 
			
		||||
	Socket  gowebsocket.Socket
 | 
			
		||||
	HTTP    *http.Client
 | 
			
		||||
	Cache   *Cache
 | 
			
		||||
 | 
			
		||||
	// Event Functions
 | 
			
		||||
	OnReadyFunctions         []func()
 | 
			
		||||
@@ -30,6 +31,14 @@ type Client struct {
 | 
			
		||||
	OnChannelDeleteFunctions []func(channel_id string)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Client cache struct.
 | 
			
		||||
type Cache struct {
 | 
			
		||||
	Users    []*User    `json:"users"`
 | 
			
		||||
	Servers  []*Server  `json:"servers"`
 | 
			
		||||
	Channels []*Channel `json:"channels"`
 | 
			
		||||
	Members  []*Member  `json:"members"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Self bot struct.
 | 
			
		||||
type SelfBot struct {
 | 
			
		||||
	Email        string `json:"-"`
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										34
									
								
								websocket.go
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								websocket.go
									
									
									
									
									
								
							@@ -42,7 +42,7 @@ func (c *Client) Start() {
 | 
			
		||||
 | 
			
		||||
		// Handle events
 | 
			
		||||
		c.handleEvents(rawData, message)
 | 
			
		||||
		fmt.Println(message)
 | 
			
		||||
		// fmt.Println(message)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Start connection
 | 
			
		||||
@@ -75,11 +75,16 @@ func (c *Client) ping() {
 | 
			
		||||
func (c *Client) handleEvents(rawData *struct {
 | 
			
		||||
	Type string `json:"type"`
 | 
			
		||||
}, message string) {
 | 
			
		||||
	if rawData.Type == "Ready" && c.OnReadyFunctions != nil {
 | 
			
		||||
	if rawData.Type == "Ready" {
 | 
			
		||||
		// Add cache
 | 
			
		||||
		c.handleCache(message)
 | 
			
		||||
 | 
			
		||||
		// Ready Event
 | 
			
		||||
		if c.OnReadyFunctions != nil {
 | 
			
		||||
			for _, i := range c.OnReadyFunctions {
 | 
			
		||||
				i()
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	} else if rawData.Type == "Message" && c.OnMessageFunctions != nil {
 | 
			
		||||
		// Message Event
 | 
			
		||||
		msgData := &Message{}
 | 
			
		||||
@@ -176,3 +181,28 @@ func (c *Client) handleEvents(rawData *struct {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) handleCache(data string) {
 | 
			
		||||
	cache := &Cache{}
 | 
			
		||||
 | 
			
		||||
	err := json.Unmarshal([]byte(data), cache)
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Printf("Unexcepted Error: %s", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Add client to users.
 | 
			
		||||
	for _, i := range cache.Users {
 | 
			
		||||
		i.Client = c
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, i := range cache.Servers {
 | 
			
		||||
		i.Client = c
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, i := range cache.Channels {
 | 
			
		||||
		i.Client = c
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	c.Cache = cache
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user