MCPcopy Create free account
hub / github.com/codealong-dev/ride-sharing / handleDriversWebSocket

Function handleDriversWebSocket

services/api-gateway/ws.go:62–172  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request, rb *messaging.RabbitMQ)

Source from the content-addressed store, hash-verified

60}
61
62func handleDriversWebSocket(w http.ResponseWriter, r *http.Request, rb *messaging.RabbitMQ) {
63 conn, err := connManager.Upgrade(w, r)
64 if err != nil {
65 log.Printf("WebSocket upgrade failed: %v", err)
66 return
67 }
68
69 defer conn.Close()
70
71 userID := r.URL.Query().Get("userID")
72 if userID == "" {
73 log.Println("No user ID provided")
74 return
75 }
76
77 packageSlug := r.URL.Query().Get("packageSlug")
78 if packageSlug == "" {
79 log.Println("No package slug provided")
80 return
81 }
82
83 // Add connection to manager
84 connManager.Add(userID, conn)
85
86 ctx := r.Context()
87
88 driverService, err := grpc_clients.NewDriverServiceClient()
89 if err != nil {
90 log.Fatal(err)
91 }
92
93 // Closing connections
94 defer func() {
95 connManager.Remove(userID)
96
97 driverService.Client.UnregisterDriver(ctx, &driver.RegisterDriverRequest{
98 DriverID: userID,
99 PackageSlug: packageSlug,
100 })
101
102 driverService.Close()
103
104 log.Println("Driver unregistered: ", userID)
105 }()
106
107 driverData, err := driverService.Client.RegisterDriver(ctx, &driver.RegisterDriverRequest{
108 DriverID: userID,
109 PackageSlug: packageSlug,
110 })
111 if err != nil {
112 log.Printf("Error registering driver: %v", err)
113 return
114 }
115
116 if err := connManager.SendMessage(userID, contracts.WSMessage{
117 Type: contracts.DriverCmdRegister,
118 Data: driverData.Driver,
119 }); err != nil {

Callers 1

mainFunction · 0.85

Calls 12

StartMethod · 0.95
NewDriverServiceClientFunction · 0.92
NewQueueConsumerFunction · 0.92
UpgradeMethod · 0.80
AddMethod · 0.80
RemoveMethod · 0.80
SendMessageMethod · 0.80
PublishMessageMethod · 0.80
UnregisterDriverMethod · 0.65
RegisterDriverMethod · 0.65
CloseMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected