martedì 21 marzo 2017

Creare un lettore di codice QR (QR reader)

Il sito http://goqr.me/api/doc/read-qr-code/ vi permette di leggere o generare codici QR, basta inviare i dati al loro sito e lor si occupano dell'elaborazione della risposta.
Allora ho creato il seguente programma per vedere se funziona:
postimage
confermo che funziona. Potete scaricarlo da qui.
Il codice sorgente è questo:
on mouseUp
   put empty into tForm
   put "http://api.qrserver.com/v1/read-qr-code/" into tUrl
   put the filename of image 1 into tFile   
   put "<file>" & tFile into tFile
   if libURLMultipartFormData(tForm, "name","file","type","file", "file", tFile) is not empty then
      answer it ##error
   else
      set the httpHeaders to line 1 of tForm
      post line 2 to -1 of tForm to url tUrl
      put it into field "rawdata"
      ## check the result, etc., here
      set the httpHeaders to empty
      put jsonimport(the text of field "rawdata") into temp
      put temp[1]["symbol"][1]["data"] into field "text1"
   end if
end mouseUp

Vediamo come funziona: l'immagine deve essere spedita ad una pagina web. Il creatore della pagina web vuole ricevere via POST:
  • una variabile chiamata name, che contenga la parola file
  • una variabile chiamata type, che contenga la parola file
  • il file dell'immagine
Per fare questo dobbiamo usale il comando  libURLMultipartFormData, fatto ciò la risposta è un testo in formato JSON che trasformiamo in un array e prendiamo solo il testo.