• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FIWARE / VCVerifier / 15674278844

16 Jun 2025 07:13AM UTC coverage: 37.558% (-7.8%) from 45.372%
15674278844

push

github

web-flow
Merge pull request #58 from FIWARE/jwt-inclusion

Jwt inclusion

99 of 674 new or added lines in 13 files covered. (14.69%)

14 existing lines in 3 files now uncovered.

1215 of 3235 relevant lines covered (37.56%)

0.42 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/openapi/websocket.go
1
package openapi
2

3
import (
4
        "net/http"
5
        "sync"
6

7
        "github.com/fiware/VCVerifier/logging"
8
        "github.com/gin-gonic/gin"
9
        "github.com/gorilla/websocket"
10
)
11

12
var (
13
        wsUpgrader = websocket.Upgrader{
NEW
14
                CheckOrigin: func(r *http.Request) bool { return true },
×
15
        }
16
        sessions = sync.Map{} // map[string]*websocket.Conn
17
)
18

NEW
19
func sendRedirect(c *gin.Context, state string, code string, redirectUrl string) {
×
NEW
20
        connection, exists := sessions.Load(state)
×
NEW
21
        if !exists {
×
NEW
22
                logging.Log().Warnf("No connection for %s exists.", state)
×
NEW
23
                c.Copy().AbortWithStatusJSON(500, ErrorMessageNoWebsocketConnection)
×
NEW
24
                return
×
NEW
25
        }
×
NEW
26
        wsConnection := connection.(*websocket.Conn)
×
NEW
27

×
NEW
28
        err := wsConnection.WriteJSON(gin.H{"type": "authenticated", "redirectUrl": redirectUrl + "?state=" + state + "&code=" + code})
×
NEW
29
        if err != nil {
×
NEW
30
                logging.Log().Warnf("Was not able to notify frontend. Err: %v", err)
×
NEW
31
        }
×
NEW
32
        go func() {
×
NEW
33
                defer wsConnection.Close()
×
NEW
34
                for {
×
NEW
35
                        _, _, err := wsConnection.ReadMessage()
×
NEW
36
                        if err != nil {
×
NEW
37
                                sessions.Delete(state)
×
NEW
38
                                break
×
39
                        }
40
                }
41
        }()
42
}
43

NEW
44
func WsHandler(c *gin.Context) {
×
NEW
45
        state, stateExists := c.GetQuery("state")
×
NEW
46
        if !stateExists {
×
NEW
47
                c.AbortWithStatusJSON(400, ErrorMessageNoState)
×
NEW
48
                // early exit
×
NEW
49
                return
×
NEW
50
        }
×
51

NEW
52
        connection, err := wsUpgrader.Upgrade(c.Writer, c.Request, nil)
×
NEW
53
        if err != nil {
×
NEW
54
                c.AbortWithError(http.StatusBadRequest, err)
×
NEW
55
                return
×
NEW
56
        }
×
NEW
57
        sessions.Store(state, connection)
×
NEW
58
        connection.WriteJSON(gin.H{"type": "session"})
×
NEW
59

×
NEW
60
        go func() {
×
NEW
61
                defer connection.Close()
×
NEW
62
                for {
×
NEW
63
                        _, _, err := connection.ReadMessage()
×
NEW
64
                        if err != nil {
×
NEW
65
                                sessions.Delete(state)
×
NEW
66
                                break
×
67
                        }
68
                }
69
        }()
70
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc