1
1
import { Subject , BehaviorSubject , interval } from 'rxjs' ;
2
2
import { takeUntil , filter , startWith } from 'rxjs/operators' ;
3
3
4
- const UPLOAD__NOPE = 'UPLOAD__NOPE' ;
5
- const UPLOAD__DONE = 'UPLOAD__DONE' ;
6
- const UPLOAD__ERROR = 'UPLOAD__ERROR' ;
7
- const UPLOAD__IN_PROGRESS = 'UPLOAD__IN_PROGRESS' ;
8
-
9
4
const POLLING_INTERVAL = 1500 ;
5
+ const UPLOAD_NOPE = 'UPLOAD_NOPE' ;
10
6
11
7
export default class Daemon {
12
8
constructor ( ) {
@@ -17,7 +13,7 @@ export default class Daemon {
17
13
this . appMessages = new Subject ( ) ;
18
14
this . serialMonitorOpened = new BehaviorSubject ( false ) ;
19
15
this . serialMonitorMessages = new Subject ( ) ;
20
- this . uploading = new BehaviorSubject ( { status : UPLOAD__NOPE } ) ;
16
+ this . uploading = new BehaviorSubject ( { status : UPLOAD_NOPE } ) ;
21
17
this . devicesList = new BehaviorSubject ( {
22
18
serial : [ ] ,
23
19
network : [ ]
@@ -60,144 +56,4 @@ export default class Daemon {
60
56
}
61
57
return a . every ( ( item , index ) => ( b [ index ] . Name === item . Name && b [ index ] . IsOpen === item . IsOpen ) ) ;
62
58
}
63
-
64
- handleAppMessage ( message ) {
65
- // Result of a list command
66
- if ( message . Ports ) {
67
- this . handleListMessage ( message ) ;
68
- }
69
- // Serial monitor message
70
- if ( message . D ) {
71
- this . serialMonitorMessages . next ( message . D ) ;
72
- }
73
-
74
- if ( message . ProgrammerStatus ) {
75
- this . handleUploadMessage ( message ) ;
76
- }
77
-
78
- if ( message . Err ) {
79
- this . uploading . next ( { status : UPLOAD__ERROR , err : message . Err } ) ;
80
- }
81
- }
82
-
83
- handleListMessage ( message ) {
84
- const lastDevices = this . devicesList . getValue ( ) ;
85
- if ( message . Network && ! Daemon . devicesListAreEquals ( lastDevices . network , message . Ports ) ) {
86
- this . devicesList . next ( {
87
- serial : lastDevices . serial ,
88
- network : message . Ports
89
- } ) ;
90
- }
91
- else if ( ! message . Network && ! Daemon . devicesListAreEquals ( lastDevices . serial , message . Ports ) ) {
92
- this . devicesList . next ( {
93
- serial : message . Ports ,
94
- network : lastDevices . network
95
- } ) ;
96
- }
97
- }
98
-
99
- handleUploadMessage ( message ) {
100
- if ( this . uploading . getValue ( ) . status !== UPLOAD__IN_PROGRESS ) {
101
- return ;
102
- }
103
- if ( message . Flash === 'Ok' && message . ProgrammerStatus === 'Done' ) {
104
- this . uploading . next ( { status : UPLOAD__DONE , msg : message . Flash } ) ;
105
- return ;
106
- }
107
- switch ( message . ProgrammerStatus ) {
108
- case 'Starting' :
109
- this . uploading . next ( { status : UPLOAD__IN_PROGRESS , msg : `Programming with: ${ message . Cmd } ` } ) ;
110
- break ;
111
- case 'Busy' :
112
- this . uploading . next ( { status : UPLOAD__IN_PROGRESS , msg : message . Msg } ) ;
113
- break ;
114
- case 'Error' :
115
- this . uploading . next ( { status : UPLOAD__ERROR , err : message . Msg } ) ;
116
- break ;
117
- case 'Killed' :
118
- this . uploading . next ( { status : UPLOAD__IN_PROGRESS , msg : `terminated by user` } ) ;
119
- this . uploading . next ( { status : UPLOAD__ERROR , err : `terminated by user` } ) ;
120
- break ;
121
- case 'Error 404 Not Found' :
122
- this . uploading . next ( { status : UPLOAD__ERROR , err : message . Msg } ) ;
123
- break ;
124
- default :
125
- this . uploading . next ( { status : UPLOAD__IN_PROGRESS , msg : message . Msg } ) ;
126
- }
127
- }
128
-
129
- /**
130
- * Perform an upload via http on the daemon
131
- * target = {
132
- * board: "name of the board",
133
- * port: "port of the board",
134
- * auth_user: "Optional user to use as authentication",
135
- * auth_pass: "Optional pass to use as authentication"
136
- * auth_key: "Optional private key",
137
- * auth_port: "Optional alternative port (default 22)"
138
- * network: true or false
139
- * }
140
- * data = {
141
- * commandline: "commandline to execute",
142
- * signature: "signature of the commandline",
143
- * files: [
144
- * {name: "Name of a file to upload on the device", data: 'base64data'}
145
- * ],
146
- * options: {}
147
- * }
148
- * cb = callback function executing everytime a packet of data arrives through the websocket
149
- */
150
- upload ( target , data ) {
151
- this . uploading . next ( { status : UPLOAD__IN_PROGRESS } ) ;
152
-
153
- if ( data . files . length === 0 ) { // At least one file to upload
154
- this . uploading . next ( { status : UPLOAD__ERROR , err : 'You need at least one file to upload' } ) ;
155
- return ;
156
- }
157
-
158
- // Main file
159
- const file = data . files [ 0 ] ;
160
- file . name = file . name . split ( '/' ) ;
161
- file . name = file . name [ file . name . length - 1 ] ;
162
-
163
- const payload = {
164
- board : target . board ,
165
- port : target . port ,
166
- commandline : data . commandline ,
167
- signature : data . signature ,
168
- hex : file . data ,
169
- filename : file . name ,
170
- extra : {
171
- auth : {
172
- username : target . auth_user ,
173
- password : target . auth_pass ,
174
- private_key : target . auth_key ,
175
- port : target . auth_port
176
- } ,
177
- wait_for_upload_port : data . options . wait_for_upload_port === 'true' || data . options . wait_for_upload_port === true ,
178
- use_1200bps_touch : data . options . use_1200bps_touch === 'true' || data . options . use_1200bps_touch === true ,
179
- network : target . network ,
180
- ssh : target . ssh ,
181
- params_verbose : data . options . param_verbose ,
182
- params_quiet : data . options . param_quiet ,
183
- verbose : data . options . verbose
184
- } ,
185
- extrafiles : data . extrafiles || [ ]
186
- } ;
187
-
188
- for ( let i = 1 ; i < data . files . length ; i += 1 ) {
189
- payload . extrafiles . push ( { filename : data . files [ i ] . name , hex : data . files [ i ] . data } ) ;
190
- }
191
-
192
- fetch ( `${ this . pluginURL } /upload` , {
193
- method : 'POST' ,
194
- headers : {
195
- 'Content-Type' : 'text/plain; charset=utf-8'
196
- } ,
197
- body : JSON . stringify ( payload )
198
- } )
199
- . catch ( error => {
200
- this . uploading . next ( { status : UPLOAD__ERROR , err : error } ) ;
201
- } ) ;
202
- }
203
59
}
0 commit comments