Files
nsis-plugin-nsjson/examples/HttpWebRequest.nsi
T
2026-04-30 00:14:03 +02:00

127 lines
4.9 KiB
NSIS

!include MUI2.nsh
!define HttpWebRequestURL `http://www.afrowsoft.co.uk/test/HttpWebRequest.php`
Name `nsJSON plug-in`
OutFile nsJSON_HttpWebRequest.exe
RequestExecutionLevel user
ShowInstDetails show
!define MUI_COMPONENTSPAGE_SMALLDESC
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English
Section
CreateDirectory $EXEDIR\Output
SectionEnd
Section /o `POST` DATAPOST
StrCpy $R0 `{ "Name": "Jonathan Doe", "Age": 23, "Formula": "a + b == 13%!", "ViewTimes": [ "10:00", "13:43", "21:19", "03:10" ] }`
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "Agent": "Mozilla/5.0 (Windows NT 10.0; rv:10.0) Gecko/20100101 Firefox/10.0" }`
DetailPrint `Send: $R0`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /value $R0
nsJSON::Set /tree HttpWebRequest Params /value `{ "a": "string", "b": true, "c": 2 }`
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebResponse /http HttpWebRequest
DetailPrint `Generate: $EXEDIR\Output\HttpWebResponse.json from HttpWebResponse`
nsJSON::Serialize /tree HttpWebResponse /format /file $EXEDIR\Output\HttpWebResponse.json
SectionEnd
Section /o `Async POST` DATAPOSTASYNC
StrCpy $R0 `{ "Name": "Jonathan Doe", "Age": 23, "Formula": "a + b == 13%!", "ViewTimes": [ "10:00", "13:43", "21:19", "03:10" ] }`
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "Async": true }`
DetailPrint `Send: $R0`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /value $R0
nsJSON::Set /tree HttpWebRequest Params /value `{ "a": "string", "b": true, "c": 2 }`
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree AsyncHttpWebResponse /http HttpWebRequest
; Wait until done.
${Do}
Sleep 1000
nsJSON::Wait HttpWebRequest /timeout 0
Pop $R0
${If} $R0 != wait
${Break}
${EndIf}
DetailPrint `Waiting...`
${Loop}
DetailPrint `Finished...`
DetailPrint `Generate: $EXEDIR\Output\AsyncHttpWebResponse.json from AsyncHttpWebResponse`
nsJSON::Serialize /tree AsyncHttpWebResponse /format /file $EXEDIR\Output\AsyncHttpWebResponse.json
SectionEnd
Section /o `Raw POST` RAWDATAPOST
StrCpy $R0 `Name=Jonathan+Doe&Age=23&Formula=a+%2B+b+%3D%3D+13%25%21&ViewTimes[]=10%3A00&ViewTimes[]=13%3A43&ViewTimes[]=21%3A19&ViewTimes[]=03%3A10`
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "DataType": "Raw" }`
DetailPrint `Send: $R0`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /value `"$R0"`
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest_Raw.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest_Raw.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebResponse /http HttpWebRequest
DetailPrint `Generate: $EXEDIR\Output\HttpWebResponse_Raw.json from HttpWebResponse`
nsJSON::Serialize /tree HttpWebResponse /format /file $EXEDIR\Output\HttpWebResponse_Raw.json
SectionEnd
Section /o `JSON POST` JSONPOST
nsJSON::Set /tree HttpWebRequest /value `{ "Url": "${HttpWebRequestURL}", "Verb": "POST", "DataType": "JSON" }`
DetailPrint `Send: $EXEDIR\Input\Example1.json`
DetailPrint `Send to: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebRequest Data /file $EXEDIR\Input\Example1.json
DetailPrint `Generate: $EXEDIR\Output\HttpWebRequest_JSON.json from HttpWebRequest`
nsJSON::Serialize /tree HttpWebRequest /format /file $EXEDIR\Output\HttpWebRequest_JSON.json
DetailPrint `Download: ${HttpWebRequestURL}`
nsJSON::Set /tree HttpWebResponse /http HttpWebRequest
DetailPrint `Generate: $EXEDIR\Output\HttpWebResponse_JSON.json from HttpWebResponse`
nsJSON::Serialize /tree HttpWebResponse /format /file $EXEDIR\Output\HttpWebResponse_JSON.json
SectionEnd
LangString DataPOSTDesc ${LANG_ENGLISH} `Sends POST data and parses the JSON response`
LangString DataPOSTAsyncDesc ${LANG_ENGLISH} `Asynchronously sends POST data and parses the JSON response`
LangString RawDataPOSTDesc ${LANG_ENGLISH} `Sends raw POST data and parses the JSON response`
LangString JSONPOSTDesc ${LANG_ENGLISH} `Sends Example1.json and parses the JSON response`
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${DATAPOST} $(DataPOSTDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${DATAPOSTASYNC} $(DataPOSTAsyncDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${RAWDATAPOST} $(RawDataPOSTDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${JSONPOST} $(JSONPOSTDesc)
!insertmacro MUI_FUNCTION_DESCRIPTION_END