38e5936236f6d3d69997424421b7a053b01a6422
[src/app-framework-binder.git] / test / token-websock.qml
1 import QtQuick 2.0
2 import QtQuick.Window 2.0
3 import QtQuick.Controls 1.4
4 import QtWebSockets 1.0
5
6 Window {
7
8         property string address_str: "ws://localhost:1234/api?token=123456"
9         property string token_str: ""
10         property string api_str: "auth"
11         property string verb_str: ""
12         property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 }
13         property string request_str: ""
14         property string status_str: ""
15
16         visible: true
17         width: 320
18         height: 300
19
20         WebSocket {
21                 id: websocket
22                 url: address_str
23                 onTextMessageReceived: {
24                         var message_json = JSON.parse (message);
25                         console.log ("Raw response: " + message)
26                         console.log ("JSON response: " + message_json)
27                          /* server is not happy with our request, ignore it */
28                         if (message_json[0] != msgid_enu.retok) {
29                                 console.log ("Return value is not ok !")
30                                 return
31                         }
32                          /* token creation or refresh happened, store it and enable buttons */
33                         if ((verb_str == "create") || (verb_str == "refresh")) {
34                                 token_str = message_json[3]
35                                 refresh_button.enabled = true
36                                 reset_button.enabled = true
37                          /* token reset happened, remove it and disable buttons */
38                         } else if (verb_str == "reset") {
39                                 token_str = ""
40                                 refresh_button.enabled = false
41                                 reset_button.enabled = false
42                                 websocket.active = false        // close the socket
43                         }
44                 }
45                 onStatusChanged: {
46                         if (websocket.status == WebSocket.Error) {
47                                 status_str = "Error: " + websocket.errorString
48                         } else if (websocket.status == WebSocket.Open) {
49                                 status_str = "Socket opened; sending message..."
50                                 if (verb_str == "create")
51                                         websocket.sendTextMessage (request_str)
52                                 } else if (websocket.status == WebSocket.Closed) {
53                                         status_str = "Socket closed"
54                                 }
55                                 console.log (status_str)
56                 }
57                 active: false
58         }
59
60         Rectangle {
61                 anchors.left: parent.left
62                 anchors.top: parent.top
63                 anchors.horizontalCenter: parent.horizontalCenter
64                 anchors.margins: 20
65
66                 Label {
67                         text: "QML Websocket AFB Sample"
68                         font.pixelSize: 18
69                         font.bold: true
70                         anchors.centerIn: parent
71                         y: 0
72                 }
73
74                 Text {
75                         id: url_notifier
76                         text: "URL: " + websocket.url
77                         y: 20
78                 }
79                 Text {
80                         id: verb_notifier
81                         text: "Verb: " + verb_str
82                         y: 40
83                 }
84                 Text {
85                         id: token_notifier
86                         text: "Token: " + token_str
87                         y: 60
88                 }
89
90                 Button {
91                         id: create_button
92                         text: "Create token"
93                         onClicked: {
94                                 verb_str = "connect"
95                                 request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_str + '", ]';
96                                 if (!websocket.active)
97                                         websocket.active = true
98                                 else
99                                         websocket.sendTextMessage (request_str)
100                         }
101                         y: 80
102                 }
103                 Button {
104                         id: refresh_button
105                         text: "Refresh token"
106                         onClicked: {
107                                 verb_str = "refresh"
108                                 request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_str + '",,"' + token_str +'" ]';
109                                 websocket.sendTextMessage (request_str)
110                         }
111                         y: 110
112                         enabled: false
113                 }
114                 Button {
115                         id: reset_button
116                         text: "Reset token"
117                         onClicked: {
118                                 verb_str = "logout"
119                                 request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_str + '", ]';
120                                 websocket.sendTextMessage (request_str)
121                         }
122                         y: 140
123                         enabled: false
124                 } 
125
126                 Text {
127                         id: request_notifier
128                         text: "Request: " + request_str
129                         y: 170
130                 }
131
132                 Text {
133                         id: status_notifier
134                         text: "Status: " + status_str
135                         y: 190
136                 }
137
138         }
139
140 }