It is currently 8 June 2025, 8:35 Advanced search

CLOUD: Convertire chiamata curl in InDe

Domande e risposte su come utilizzare Instant Developer Cloud al meglio

CLOUD: Convertire chiamata curl in InDe

Postby d.termini » 16 May 2023, 12:47

Dovrei fare una chiamata di questo genere:
Code: Select all
curl --tlsv1.2 \
    --cacert Amazon-root-CA-1.pem \
    --cert device.pem.crt \
    --key private.pem.key \
    --request POST \
    --data "{ \"message\": \"Hello, world\" }" \
    "https://IoT_data_endpoint:8443/topics/topic?qos=1"

Su InDe Cloud conosco app.fs.url(), ma non saprei come gestire correttamente il passaggio dei certificati, es:
Code: Select all
var req = app.fs.url('"https://IoT_data_endpoint:8443/topics/topic?qos=1');
  var res = yield req.post({
    'headers' : {
      '--cacert' : $AmazonRootCA1,
      '--cert' : $certificatepemcrt,
      '--key' : $privatepemkey
    },
    'body' : JSON.stringify({test : 'payload'}),
  });

È corretto? Si deve fare in altro modo? Posso usare curl (come)?

Se provo a fare la chiamata così come ho scritto (chiaramente usando l'url corretto) mi esce questo errore in debug quando richiama post()
Code: Select all
Cannot access 'uploadprogressTimer' before initialization nel view.actions.btnTestCommandHttp.onClick alla riga 7
Stack trace
@ Request._callback (nodedriver.js:1212:19)
@ self.callback (request.js:185:22)
@ Request.emit (node:events:394:28)
@ Request.init (request.js:273:17)
@ new Request (request.js:127:8)
@ request (index.js:53:10)
@ App.NodeDriver.httpRequest (nodedriver.js:1210:13)
@ App.Url.post (url.js:57:11)

Sembra che stia cercando di caricare i file
d.termini
 
Posts: 1656
Joined: 13 November 2017, 8:41

Re: CLOUD: Convertire chiamata curl in InDe

Postby fgiardini » 17 May 2023, 8:59

Ciao, spulciando la documentazione di Node.js (https://nodejs.org/api/https.html#https ... s-callback) mi sembra di capire che 'ca', 'cert' e 'key' possono essere passati come proprietà del parametro 'options'. Io proverei a riscrivere la richiesta così:
Code: Select all
var res = yield req.post({
    ca : $AmazonRootCA1,
    cert : $certificatepemcrt,
    key : $privatepemkey,
    body : JSON.stringify({test : 'payload'}
});

Credo che comunque nella richiesta vada passato il contenuto di quei file, non sono sicuro che basti passarli con il riferimento $risorsa.
Probabilmente bisognerà prima leggerne il contenuto e inserire quello come valore dei parametri.
Francesco
fgiardini
 
Posts: 17
Joined: 10 March 2022, 16:37

Re: CLOUD: Convertire chiamata curl in InDe

Postby d.termini » 17 May 2023, 9:15

Grazie :)
Ci provo appena possibile
d.termini
 
Posts: 1656
Joined: 13 November 2017, 8:41


Return to Tips & Tricks - Cloud

Who is online

Users browsing this forum: No registered users and 10 guests