@@ -124,6 +124,10 @@ Blockly.Action.blocks['http_get'] =
124124 + ' <field name="TEXT">http://</field>'
125125 + ' </shadow>'
126126 + ' </value>'
127+ + ' <value name="TIMEOUT">'
128+ + ' </value>'
129+ + ' <value name="UNIT">'
130+ + ' </value>'
127131 + ' <value name="STATEMENT">'
128132 + ' </value>'
129133 + '</block>' ;
@@ -133,6 +137,14 @@ Blockly.Blocks['http_get'] = {
133137 this . appendValueInput ( 'URL' )
134138 . appendField ( Blockly . Translate ( 'http_get' ) ) ;
135139
140+ this . appendDummyInput ( )
141+ . appendField ( Blockly . Translate ( 'http_get_timeout' ) )
142+ . appendField ( new Blockly . FieldTextInput ( 2000 ) , 'TIMEOUT' )
143+ . appendField ( new Blockly . FieldDropdown ( [
144+ [ Blockly . Translate ( 'http_get_settimeout_ms' ) , 'ms' ] ,
145+ [ Blockly . Translate ( 'http_get_settimeout_sec' ) , 'sec' ]
146+ ] ) , 'UNIT' ) ;
147+
136148 this . appendStatementInput ( 'STATEMENT' )
137149 . setCheck ( null ) ;
138150
@@ -149,8 +161,16 @@ Blockly.Blocks['http_get'] = {
149161Blockly . JavaScript [ 'http_get' ] = function ( block ) {
150162 const URL = Blockly . JavaScript . valueToCode ( block , 'URL' , Blockly . JavaScript . ORDER_ATOMIC ) ;
151163 const statement = Blockly . JavaScript . statementToCode ( block , 'STATEMENT' ) ;
164+ const unit = block . getFieldValue ( 'UNIT' ) ;
165+ let timeout = block . getFieldValue ( 'TIMEOUT' ) ;
166+ if ( ! timeout ) {
167+ timeout = 2000 ;
168+ }
169+ if ( unit === 'sec' ) {
170+ timeout *= 1000 ;
171+ }
152172
153- return `httpGet(${ URL } , { timeout: 2000 }, async (err, response) => {\n` +
173+ return `httpGet(${ URL } , { timeout: ${ timeout } }, async (err, response) => {\n` +
154174 Blockly . JavaScript . prefixLines ( `if (err) {` , Blockly . JavaScript . INDENT ) + '\n' +
155175 Blockly . JavaScript . prefixLines ( `console.error(err);` , Blockly . JavaScript . INDENT + Blockly . JavaScript . INDENT ) + '\n' +
156176 Blockly . JavaScript . prefixLines ( `}` , Blockly . JavaScript . INDENT ) + '\n' +
@@ -166,6 +186,10 @@ Blockly.Action.blocks['http_post'] =
166186 + ' <field name="TEXT">http://</field>'
167187 + ' </shadow>'
168188 + ' </value>'
189+ + ' <value name="TIMEOUT">'
190+ + ' </value>'
191+ + ' <value name="UNIT">'
192+ + ' </value>'
169193 + ' <value name="DATA">'
170194 + ' <shadow type="object_new">'
171195 + ' </shadow>'
@@ -179,6 +203,14 @@ Blockly.Blocks['http_post'] = {
179203 this . appendValueInput ( 'URL' )
180204 . appendField ( Blockly . Translate ( 'http_post' ) ) ;
181205
206+ this . appendDummyInput ( )
207+ . appendField ( Blockly . Translate ( 'http_post_timeout' ) )
208+ . appendField ( new Blockly . FieldTextInput ( 2000 ) , 'TIMEOUT' )
209+ . appendField ( new Blockly . FieldDropdown ( [
210+ [ Blockly . Translate ( 'http_post_settimeout_ms' ) , 'ms' ] ,
211+ [ Blockly . Translate ( 'http_post_settimeout_sec' ) , 'sec' ]
212+ ] ) , 'UNIT' ) ;
213+
182214 this . appendValueInput ( 'DATA' )
183215 . appendField ( Blockly . Translate ( 'http_post_data' ) ) ;
184216
@@ -199,12 +231,20 @@ Blockly.JavaScript['http_post'] = function(block) {
199231 const URL = Blockly . JavaScript . valueToCode ( block , 'URL' , Blockly . JavaScript . ORDER_ATOMIC ) ;
200232 const data = Blockly . JavaScript . valueToCode ( block , 'DATA' , Blockly . JavaScript . ORDER_ATOMIC ) ;
201233 const statement = Blockly . JavaScript . statementToCode ( block , 'STATEMENT' ) ;
234+ const unit = block . getFieldValue ( 'UNIT' ) ;
235+ let timeout = block . getFieldValue ( 'TIMEOUT' ) ;
236+ if ( ! timeout ) {
237+ timeout = 2000 ;
238+ }
239+ if ( unit === 'sec' ) {
240+ timeout *= 1000 ;
241+ }
202242
203243 if ( ! data ) {
204244 data = '{}' ;
205245 }
206246
207- return `httpPost(${ URL } , ${ data } , { timeout: 2000 }, async (err, response) => {\n` +
247+ return `httpPost(${ URL } , ${ data } , { timeout: ${ timeout } }, async (err, response) => {\n` +
208248 Blockly . JavaScript . prefixLines ( `if (err) {` , Blockly . JavaScript . INDENT ) + '\n' +
209249 Blockly . JavaScript . prefixLines ( `console.error(err);` , Blockly . JavaScript . INDENT + Blockly . JavaScript . INDENT ) + '\n' +
210250 Blockly . JavaScript . prefixLines ( `}` , Blockly . JavaScript . INDENT ) + '\n' +
0 commit comments