@@ -11,10 +11,9 @@ const on_start_build = () => {
11
11
resultModal . querySelector ( '.modal-body > div.alert:nth-child(1)' ) . classList . remove ( 'd-none' )
12
12
resultModal . querySelector ( '.modal-body > div.alert:nth-child(2)' ) . classList . add ( 'd-none' )
13
13
resultModal . querySelector ( '.modal-body > div.alert:nth-child(3)' ) . classList . add ( 'd-none' )
14
- resultModal . querySelector ( '.modal-footer > button:nth-child(2)' ) . classList . add ( 'd-none' )
15
14
16
15
taskId = 0
17
- taskStatus = 2
16
+ taskStatus = 0
18
17
elapseSeconds = 0
19
18
count_time ( )
20
19
}
@@ -27,38 +26,33 @@ const on_server_error = (errmsg) => {
27
26
}
28
27
29
28
const start_build = ( target ) => {
30
- const url = webapi
31
29
const scriptName = document . getElementById ( 'scriptName' ) . value
32
30
const pyver = document . getElementById ( 'pythonVersion' ) . value
33
31
const content = document . getElementById ( 'scriptContent' ) . value
34
32
35
- const data = {
33
+ const paras = {
36
34
script : scriptName ,
37
35
pyver : pyver ,
38
- source : content ,
39
36
target : target ,
40
37
}
38
+ const url = make_url ( webapi , paras )
41
39
42
40
const onsuccess = ( task ) => {
43
41
taskId = task . id
44
- taskStatus = task . status
45
- if ( taskStatus == 2 )
46
- on_start_build ( )
47
- else
48
- on_task_error ( '${taskStatus}' )
42
+ taskStatus = task . state
43
+ if ( taskStatus >= 10 ) {
44
+ query_task ( )
45
+ }
49
46
}
50
47
51
- send_request ( 'GET ' , url , data , onsuccess , on_task_error )
48
+ send_request ( 'POST ' , url , content , onsuccess , on_task_error )
52
49
}
53
50
54
- const make_url = ( method , url , data ) => {
55
- if ( method === "GET" && data ) {
56
- const paras = [ ]
57
- for ( const prop in data )
58
- paras . push ( `${ prop } =${ data [ prop ] } ` )
59
- return `${ url } ?${ paras . join ( '&' ) } `
60
- }
61
- return url
51
+ const make_url = ( url , data ) => {
52
+ const paras = [ ]
53
+ for ( const prop in data )
54
+ paras . push ( `${ prop } =${ data [ prop ] } ` )
55
+ return `${ url } ?${ paras . join ( '&' ) } `
62
56
}
63
57
64
58
const on_task_error = ( errmsg ) => {
@@ -68,17 +62,18 @@ const on_task_error = (errmsg) => {
68
62
69
63
const send_request = ( method , url , data , onsuccess , onerror ) => {
70
64
71
- const req = new Request ( make_url ( method , url , data ) )
65
+ const req = new Request ( url )
72
66
const headers = new Headers ( )
73
67
74
68
// 只是为了开发测试使用, admin 用户和密码
75
69
// 'WWW-Authenticate': 'Basic YWRtaW46YWRtaW4='
70
+ headers . append ( 'Authorization' , 'Basic YWRtaW46YWRtaW4=' )
76
71
77
72
// flyuser 用户的密码 "(thxjv!t8-F9*9j!q=)"
78
- const username = `flyuser-pyarmor`
79
- const basicauth = btoa ( `${ username } :(thxjv!t8-F9*9j!q=)` )
73
+ // const username = `flyuser-pyarmor`
74
+ // const basicauth = btoa(`${username}:(thxjv!t8-F9*9j!q=)`)
80
75
// headers.append('Authorization', `Basic ${basicauth}`)
81
- headers . append ( 'Authorization' , 'Basic YWRtaW46YWRtaW4=' )
76
+ // headers.append("Content-Type", "application/octet-stream" )
82
77
83
78
if ( method === 'POST' || method === 'PUT' )
84
79
headers . append ( "Content-Type" , "application/json" )
@@ -98,93 +93,62 @@ const send_request = (method, url, data, onsuccess, onerror) => {
98
93
} )
99
94
100
95
. then ( ( data ) => {
101
- onsuccess ( data )
96
+ if ( data . err ) {
97
+ throw new Error ( data . errmsg )
98
+ }
99
+ else
100
+ onsuccess ( data )
102
101
} )
103
102
104
103
. catch ( ( err ) => {
105
- console . log ( err )
106
104
onerror ( err )
107
105
} )
108
106
}
109
107
110
-
111
- const request_download = ( onsuccess , onerror ) => {
112
- const headers = new Headers ( )
113
- const username = `flyuser-pyarmor`
114
- const basicauth = btoa ( `${ username } :(thxjv!t8-F9*9j!q=)` )
115
- headers . append ( 'Authorization' , `Basic ${ basicauth } ` )
116
- headers . append ( "Content-Type" , "application/json" )
117
-
118
- const url = webapi
119
- const body = JSON . stringify ( {
120
- pk : taskId ,
121
- action : "download" ,
122
- } )
123
- const method = "POsT"
124
- const options = {
125
- mode : "cors" ,
126
- headers : headers ,
127
- method : method ,
128
- body : body ,
129
- }
130
-
131
- fetch ( url , options )
132
-
133
- . then ( ( response ) => {
134
- if ( ! response . ok ) {
135
- throw new Error ( `${ response . status } ` )
136
- }
137
- return response . blob ( )
138
- } )
139
-
140
- . then ( ( response ) => {
141
- const href = URL . createObjectURL ( response )
142
- onsuccess ( href )
143
- } )
144
-
145
- . catch ( ( err ) => onerror ( err ) )
146
- }
147
-
148
- const download_script = ( script ) => {
149
- const onsuccess = ( href ) => {
150
- const a = document . createElement ( 'a' )
151
- a . href = href
152
- a . setAttribute ( 'download' , `${ script } ` )
153
- a . click ( )
154
- URL . revokeObjectURL ( href )
155
- }
156
- request_download ( onsuccess , on_task_error )
108
+ const enable_download_link = ( data ) => {
109
+ const scriptName = document . getElementById ( 'scriptName' ) . value
110
+ const blob = new Blob ( [ data ] )
111
+ const a = resultModal . querySelector ( '.modal-body > div.alert:nth-child(3) > a' )
112
+ a . href = URL . createObjectURL ( blob )
113
+ a . download = scriptName
114
+ resultModal . querySelector ( '.modal-body > div.alert:nth-child(1)' ) . classList . add ( 'd-none' )
115
+ resultModal . querySelector ( '.modal-body > div.alert:nth-child(2)' ) . classList . add ( 'd-none' )
116
+ resultModal . querySelector ( '.modal-body > div.alert:nth-child(3)' ) . classList . remove ( 'd-none' )
117
+ console . log ( data )
157
118
}
158
119
159
120
const query_task = ( ) => {
160
- const url = webapi
161
- const data = {
162
- pk : taskId ,
163
- action : 'query' ,
121
+ if ( taskId === 0 )
122
+ return
123
+
124
+ const paras = {
125
+ pk : taskId
164
126
}
127
+ const url = make_url ( webapi , paras )
165
128
166
129
const onsuccess = ( task ) => {
167
130
taskId = task . id
168
- taskStatus = task . status
131
+ taskStatus = task . state
169
132
if ( taskStatus == 10 ) {
170
- resultModal . querySelector ( '.modal-footer > button:nth-child(3)' ) . classList . remove ( 'd-none' )
133
+ enable_download_link ( task . data )
171
134
}
172
135
else if ( taskStatus > 10 ) {
173
- on_task_error ( ' ${taskStatus}' )
136
+ on_task_error ( ` ${ taskStatus } ` )
174
137
}
175
- else if ( taskStatus != 2 ) {
176
- on_task_error ( ' ${taskStatus}' )
138
+ else if ( taskStatus != 2 && taskStatus != 0 ) {
139
+ on_task_error ( ` ${ taskStatus } ` )
177
140
}
178
141
}
179
142
180
- send_request ( 'GET' , url , data , onsuccess , on_task_error )
143
+ send_request ( 'GET' , url , null , onsuccess , on_task_error )
181
144
}
182
145
183
146
const count_time = ( ) => {
184
147
elapseSeconds += 1
185
148
document . getElementById ( 'worktime' ) . innerHTML = `${ elapseSeconds } `
186
- if ( taskStatus == 2 ) {
187
- query_task ( )
149
+ if ( taskStatus < 10 ) {
150
+ if ( elapseSeconds % 5 === 0 )
151
+ query_task ( )
188
152
setTimeout ( count_time , 1000 )
189
153
}
190
154
}
@@ -195,6 +159,7 @@ if (resultModal) {
195
159
const button = event . relatedTarget
196
160
// Extract info from data-bs-* attributes
197
161
const target = button . getAttribute ( 'data-bs-whatever' )
162
+ on_start_build ( )
198
163
start_build ( target )
199
164
} )
200
165
@@ -204,10 +169,6 @@ if (resultModal) {
204
169
modal . show ( )
205
170
}
206
171
} )
207
-
208
- resultModal . querySelector ( '.modal-footer > button:nth-child(2)' ) . addEventListener ( 'click' , event => {
209
- download_script ( document . getElementById ( 'scriptName' ) . value )
210
- } )
211
172
}
212
173
213
174
if ( confirmModal ) {
0 commit comments