SendClosed func moved to response package

This commit is contained in:
Chris kerr 2024-07-27 15:14:51 -04:00
parent a7518e83a5
commit 9edd7f6337
2 changed files with 21 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"grain/relay/db" "grain/relay/db"
"grain/relay/handlers/response"
relay "grain/relay/types" relay "grain/relay/types"
"grain/relay/utils" "grain/relay/utils"
@ -19,14 +20,14 @@ var subscriptions = make(map[string]relay.Subscription)
func HandleReq(ws *websocket.Conn, message []interface{}) { func HandleReq(ws *websocket.Conn, message []interface{}) {
if len(message) < 3 { if len(message) < 3 {
fmt.Println("Invalid REQ message format") fmt.Println("Invalid REQ message format")
SendClosed(ws, "", "invalid: invalid REQ message format") response.SendClosed(ws, "", "invalid: invalid REQ message format")
return return
} }
subID, ok := message[1].(string) subID, ok := message[1].(string)
if !ok { if !ok {
fmt.Println("Invalid subscription ID format") fmt.Println("Invalid subscription ID format")
SendClosed(ws, "", "invalid: invalid subscription ID format") response.SendClosed(ws, "", "invalid: invalid subscription ID format")
return return
} }
@ -35,7 +36,7 @@ func HandleReq(ws *websocket.Conn, message []interface{}) {
filterData, ok := filter.(map[string]interface{}) filterData, ok := filter.(map[string]interface{})
if !ok { if !ok {
fmt.Println("Invalid filter format") fmt.Println("Invalid filter format")
SendClosed(ws, subID, "invalid: invalid filter format") response.SendClosed(ws, subID, "invalid: invalid filter format")
return return
} }
@ -53,7 +54,7 @@ func HandleReq(ws *websocket.Conn, message []interface{}) {
// Check if subscription already exists // Check if subscription already exists
if _, exists := subscriptions[subID]; exists { if _, exists := subscriptions[subID]; exists {
SendClosed(ws, subID, "duplicate: subID already opened") response.SendClosed(ws, subID, "duplicate: subID already opened")
return return
} }
@ -64,7 +65,7 @@ func HandleReq(ws *websocket.Conn, message []interface{}) {
queriedEvents, err := QueryEvents(filters, db.GetClient(), "grain") queriedEvents, err := QueryEvents(filters, db.GetClient(), "grain")
if err != nil { if err != nil {
fmt.Println("Error querying events:", err) fmt.Println("Error querying events:", err)
SendClosed(ws, subID, "error: could not query events") response.SendClosed(ws, subID, "error: could not query events")
return return
} }
@ -74,7 +75,7 @@ func HandleReq(ws *websocket.Conn, message []interface{}) {
err = websocket.Message.Send(ws, string(msgBytes)) err = websocket.Message.Send(ws, string(msgBytes))
if err != nil { if err != nil {
fmt.Println("Error sending event:", err) fmt.Println("Error sending event:", err)
SendClosed(ws, subID, "error: could not send event") response.SendClosed(ws, subID, "error: could not send event")
return return
} }
} }
@ -85,7 +86,7 @@ func HandleReq(ws *websocket.Conn, message []interface{}) {
err = websocket.Message.Send(ws, string(eoseBytes)) err = websocket.Message.Send(ws, string(eoseBytes))
if err != nil { if err != nil {
fmt.Println("Error sending EOSE:", err) fmt.Println("Error sending EOSE:", err)
SendClosed(ws, subID, "error: could not send EOSE") response.SendClosed(ws, subID, "error: could not send EOSE")
return return
} }
} }
@ -153,9 +154,3 @@ func QueryEvents(filters []relay.Filter, client *mongo.Client, databaseName stri
return results, nil return results, nil
} }
func SendClosed(ws *websocket.Conn, subID string, message string) {
closeMsg := []interface{}{"CLOSED", subID, message}
closeBytes, _ := json.Marshal(closeMsg)
websocket.Message.Send(ws, string(closeBytes))
}

View File

@ -0,0 +1,13 @@
package response
import (
"encoding/json"
"golang.org/x/net/websocket"
)
func SendClosed(ws *websocket.Conn, subID string, message string) {
closeMsg := []interface{}{"CLOSED", subID, message}
closeBytes, _ := json.Marshal(closeMsg)
websocket.Message.Send(ws, string(closeBytes))
}