Skip to content

Commit a0cc114

Browse files
Release 2.3.0 (#7)
# Release 2.3.0 ## Improvements - Dynamically created function "sendRequestNUM" return now the HTTPClient.Response as second return value. - Parameter "logContent" within "sendRequestNUM" function can configure if the full HTTP response content should be logged. Set to FALSE to prevent unnecessary high processing loads for bigger data content like images. ## Bugfix - Headers did not work via sendRequestNUM - Headers were mixed up for requests send via UI and sendRequestNUM function
1 parent 2417973 commit a0cc114

6 files changed

Lines changed: 93 additions & 32 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## Release 2.3.0
5+
6+
### Improvements
7+
- Dynamically created function "sendRequestNUM" return now the HTTPClient.Response as second return value.
8+
- Parameter "logContent" within "sendRequestNUM" function can configure if the full HTTP response content should be logged. Set to FALSE to prevent unnecessary high processing loads for bigger data content like images.
9+
10+
### Bugfix
11+
- Headers did not work via sendRequestNUM
12+
- Headers were mixed up for requests send via UI and sendRequestNUM function
13+
414
## Release 2.2.0
515

616
### New features

CSK_Module_MultiHTTPClient/project.mf.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -529,9 +529,11 @@ Needs then to be called via "Script.callFunction".</desc>
529529
<param desc="Endpoint" multiplicity="1" name="endpoint" type="string"/>
530530
<param desc="Port" multiplicity="1" name="port" type="int"/>
531531
<param desc="Optional list of headers (JSON)." multiplicity="?" name="header" type="string"/>
532-
<param desc="Body content (JSON)." multiplicity="?" name="body" type="string"/>
532+
<param desc="Optional body content (JSON)." multiplicity="?" name="body" type="string"/>
533533
<param desc="Type of content." multiplicity="?" name="contentType" type="string"/>
534+
<param desc="Set status if full respond content should be logged.&#10;Set to false if e.g. bigger binary data should not be processed." multiplicity="?" name="logContent" type="bool"/>
534535
<return desc="Response (JSON)" multiplicity="1" name="response" type="string"/>
536+
<return alias="HTTPClient.Response" desc="Response" multiplicity="?" name="response" type="object"/>
535537
</function>
536538
</serves>
537539
</crown>
@@ -563,7 +565,7 @@ Needs then to be called via "Script.callFunction".</desc>
563565
</crown>
564566
</crown>
565567
<meta key="author">SICK AG</meta>
566-
<meta key="version">2.2.0</meta>
568+
<meta key="version">2.3.0</meta>
567569
<meta key="priority">low</meta>
568570
<meta key="copy-protected">false</meta>
569571
<meta key="read-protected">false</meta>

CSK_Module_MultiHTTPClient/scripts/CSK_MultiHTTPClient_Processing.lua

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,10 @@ end
190190
---@param tempRequestActive bool Status if it is just a temporarly configured request or a preconfigured one
191191
---@param showResponse bool Status if response should be notified as event (e.g. to show it on UI)
192192
---@param eventName string? Optional name of event to notify the response
193+
---@param logContent bool? Set status if full respond content should be logged
193194
---@return string response Response of HTTP request
194-
local function sendInternalRequest(tempRequestActive, showResponse, eventName)
195+
---@return HTTPClient.Response response Response of HTTP request
196+
local function sendInternalRequest(tempRequestActive, showResponse, eventName, logContent)
195197

196198
local timerQueueSize = 0
197199
local eventQueueSize = 0
@@ -248,8 +250,10 @@ local function sendInternalRequest(tempRequestActive, showResponse, eventName)
248250
end
249251
end
250252

251-
jsonResponse.Response = HTTPClient.Response.getContent(response)
252-
responseMessage = responseMessage .. helperFuncs.jsonLine2Table(HTTPClient.Response.getContent(response)) .. '\n'
253+
if logContent then
254+
responseMessage = responseMessage .. helperFuncs.jsonLine2Table(HTTPClient.Response.getContent(response)) .. '\n'
255+
jsonResponse.Response = HTTPClient.Response.getContent(response)
256+
end
253257
else
254258
local error = HTTPClient.Response.getError(response)
255259
local errorDetail = HTTPClient.Response.getErrorDetail(response)
@@ -268,12 +272,26 @@ local function sendInternalRequest(tempRequestActive, showResponse, eventName)
268272
Script.notifyEvent("MultiHTTPClient_OnNewValueToForward" .. multiHTTPClientInstanceNumberString, "MultiHTTPClient_OnNewResponseMessage", responseMessage)
269273
end
270274
end
271-
return json.encode(jsonResponse)
275+
local encodedData = json.encode(jsonResponse)
276+
return encodedData, response
272277
end
273278
end
274279

275-
local function sendRequest(mode, endpoint, port, header, body, contentType)
276-
processingParams.extendedResponse = true
280+
local function sendRequest(mode, endpoint, port, header, body, contentType, logContent)
281+
processingParams.headers = {}
282+
if header ~= nil and header ~= '' then
283+
local headerTable = json.decode(header)
284+
for key, value in pairs(headerTable) do
285+
processingParams.headers[key] = value
286+
end
287+
end
288+
289+
if contentType ~= nil then
290+
processingParams.requestContentType = contentType
291+
else
292+
processingParams.requestContentType = 'application/json'
293+
end
294+
277295
processingParams.requestMode = mode
278296
processingParams.requestEndpoint = endpoint
279297
processingParams.requestPort = port
@@ -284,11 +302,16 @@ local function sendRequest(mode, endpoint, port, header, body, contentType)
284302
processingParams.requestContent = ''
285303
end
286304

287-
local response = sendInternalRequest(true, false)
305+
local responseString, response
306+
if logContent == true or logContent == nil then
307+
responseString, response = sendInternalRequest(true, false, nil, true)
308+
else
309+
responseString, response = sendInternalRequest(true, false, nil, false)
310+
end
288311

289-
return response
312+
return responseString, response
290313
end
291-
Script.serveFunction('CSK_MultiHTTPClient.sendRequest' .. multiHTTPClientInstanceNumberString, sendRequest, 'string, string, int, string:?, string:?, string:?', 'string')
314+
Script.serveFunction('CSK_MultiHTTPClient.sendRequest' .. multiHTTPClientInstanceNumberString, sendRequest, 'string, string, int, string:?, string:?, string:?, bool:?', 'string:1, object:?:HTTPClient.Response')
292315

293316
--- Function to set timer if request should be executed periodically
294317
---@param requestName string Name of preconfigured request
@@ -303,9 +326,9 @@ local function setTimer(requestName)
303326
if processingParams.clientActivated then
304327
setSpecificRequest(requestName)
305328
if selectedRequest == requestName then
306-
sendInternalRequest(false, true, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName)
329+
sendInternalRequest(false, true, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName, true)
307330
else
308-
sendInternalRequest(false, false, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName)
331+
sendInternalRequest(false, false, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName, true)
309332
end
310333
end
311334
end
@@ -349,9 +372,9 @@ local function setRegisteredEvent(requestName)
349372
end
350373
setSpecificRequest(requestName)
351374
if selectedRequest == requestName then
352-
sendInternalRequest(false, true, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName)
375+
sendInternalRequest(false, true, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName, true)
353376
else
354-
sendInternalRequest(false, false, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName)
377+
sendInternalRequest(false, false, "MultiHTTPClient_OnNewReponse" .. multiHTTPClientInstanceNumberString .. '_' .. processingParams.requests[requestName].requestName, true)
355378
end
356379
end
357380
end
@@ -544,14 +567,18 @@ local function handleOnNewProcessingParameter(multiHTTPClientNo, parameter, valu
544567

545568
elseif parameter == 'sendRequest' then
546569
if processingParams.clientActivated then
547-
sendInternalRequest(true, true)
570+
sendInternalRequest(true, true, nil, true)
548571
end
549572

550-
elseif parameter == 'headerUpdate' then
551-
processingParams.headers[value] = value2
573+
elseif parameter == 'setHeaders' then
574+
processingParams.headers = {}
552575

553-
elseif parameter == 'deleteHeader' then
554-
deleteHeader(value)
576+
if value ~= nil and value ~= '""' then
577+
local headerTable = json.decode(value)
578+
for headerKey, headerValue in pairs(headerTable) do
579+
processingParams.headers[headerKey] = headerValue
580+
end
581+
end
555582

556583
elseif parameter == 'selectedRequest' then
557584
if value then

CSK_Module_MultiHTTPClient/scripts/Communication/MultiHTTPClient/MultiHTTPClient_Controller.lua

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,15 @@ Script.serveFunction('CSK_MultiHTTPClient.setRequestPort', setRequestPort)
669669

670670
local function sendRequestViaUI()
671671
if multiHTTPClient_Instances[selectedInstance].parameters.clientActivated == true then
672+
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'requestMode', multiHTTPClient_Instances[selectedInstance].requestMode)
673+
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'requestEndpoint', multiHTTPClient_Instances[selectedInstance].requestEndpoint)
674+
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'requestPort', multiHTTPClient_Instances[selectedInstance].requestPort)
675+
676+
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'setHeaders', json.encode(multiHTTPClient_Instances[selectedInstance].headers))
677+
678+
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'requestContentType', multiHTTPClient_Instances[selectedInstance].requestContentType)
679+
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'requestContent', multiHTTPClient_Instances[selectedInstance].requestContent)
680+
672681
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'sendRequest')
673682
else
674683
_G.logger:fine(nameOfModule .. ": Client currently not active.")
@@ -703,7 +712,6 @@ local function addHeader()
703712
_G.logger:fine(nameOfModule .. ": Add header key = " .. tostring(multiHTTPClient_Instances[selectedInstance]['headerKey']) .. " with value = " .. tostring(multiHTTPClient_Instances[selectedInstance]['headerValue']))
704713
multiHTTPClient_Instances[selectedInstance].headers[multiHTTPClient_Instances[selectedInstance]['headerKey']] = multiHTTPClient_Instances[selectedInstance]['headerValue']
705714
multiHTTPClient_Instances[selectedInstance].selectedHeaderKey = multiHTTPClient_Instances[selectedInstance]['headerKey']
706-
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'headerUpdate', multiHTTPClient_Instances[selectedInstance]['headerKey'], multiHTTPClient_Instances[selectedInstance]['headerValue'])
707715
handleOnExpiredTmrMultiHTTPClient()
708716
end
709717
Script.serveFunction('CSK_MultiHTTPClient.addHeader', addHeader)
@@ -712,7 +720,6 @@ local function deleteHeader()
712720
_G.logger:fine(nameOfModule .. ": Delete header key = " .. tostring(multiHTTPClient_Instances[selectedInstance]['headerKey']))
713721
multiHTTPClient_Instances[selectedInstance].headers[multiHTTPClient_Instances[selectedInstance]['headerKey']] = nil
714722
collectgarbage()
715-
Script.notifyEvent("MultiHTTPClient_OnNewProcessingParameter", selectedInstance, 'deleteHeader', multiHTTPClient_Instances[selectedInstance]['headerKey'])
716723

717724
local check = false
718725
for key, _ in pairs(multiHTTPClient_Instances[selectedInstance].headers) do

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Tested on
1717

1818
|Device|Firmware|Module version|
1919
|--|--|--|
20+
|SIM800|V1.2.0|V2.3.0|
2021
|SICK AppEngine|V1.7.0|V2.2.0|
2122
|SICK AppEngine|V1.7.0|V2.0.0|
2223
|SIM1012|V2.4.2|V2.1.0|

docu/CSK_Module_MultiHTTPClient.html

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<meta name="viewport" content="width=device-width, initial-scale=1.0">
77
<meta name="generator" content="Asciidoctor 2.0.12">
88
<meta name="author" content="SICK AG">
9-
<title>Documentation - CSK_Module_MultiHTTPClient 2.2.0</title>
9+
<title>Documentation - CSK_Module_MultiHTTPClient 2.3.0</title>
1010
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
1111
<style>
1212
/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
@@ -615,11 +615,11 @@
615615
</head>
616616
<body class="article toc2 toc-left">
617617
<div id="header">
618-
<h1>Documentation - CSK_Module_MultiHTTPClient 2.2.0</h1>
618+
<h1>Documentation - CSK_Module_MultiHTTPClient 2.3.0</h1>
619619
<div class="details">
620620
<span id="author" class="author">SICK AG</span><br>
621-
<span id="revnumber">version 2.2.0,</span>
622-
<span id="revdate">2025-05-28</span>
621+
<span id="revnumber">version 2.3.0,</span>
622+
<span id="revdate">2026-01-30</span>
623623
</div>
624624
<div id="toc" class="toc2">
625625
<div id="toctitle">Table of Contents</div>
@@ -805,11 +805,11 @@ <h2 id="_document_metadata">Document metadata</h2>
805805
</tr>
806806
<tr>
807807
<th class="tableblock halign-left valign-top"><p class="tableblock">Version</p></th>
808-
<td class="tableblock halign-left valign-top"><p class="tableblock">2.2.0</p></td>
808+
<td class="tableblock halign-left valign-top"><p class="tableblock">2.3.0</p></td>
809809
</tr>
810810
<tr>
811811
<th class="tableblock halign-left valign-top"><p class="tableblock">Date</p></th>
812-
<td class="tableblock halign-left valign-top"><p class="tableblock">2025-05-28</p></td>
812+
<td class="tableblock halign-left valign-top"><p class="tableblock">2026-01-30</p></td>
813813
</tr>
814814
<tr>
815815
<th class="tableblock halign-left valign-top"><p class="tableblock">Author</p></th>
@@ -1868,14 +1868,21 @@ <h6 id="_parameters_5">Parameters</h6>
18681868
<td class="tableblock halign-left valign-top"><p class="tableblock">body</p></td>
18691869
<td class="tableblock halign-left valign-top"><p class="tableblock">STRING</p></td>
18701870
<td class="tableblock halign-left valign-top"><p class="tableblock">?</p></td>
1871-
<td class="tableblock halign-left valign-top"><p class="tableblock">Body content (JSON).</p></td>
1871+
<td class="tableblock halign-left valign-top"><p class="tableblock">Optional body content (JSON).</p></td>
18721872
</tr>
18731873
<tr>
18741874
<td class="tableblock halign-left valign-top"><p class="tableblock">contentType</p></td>
18751875
<td class="tableblock halign-left valign-top"><p class="tableblock">STRING</p></td>
18761876
<td class="tableblock halign-left valign-top"><p class="tableblock">?</p></td>
18771877
<td class="tableblock halign-left valign-top"><p class="tableblock">Type of content.</p></td>
18781878
</tr>
1879+
<tr>
1880+
<td class="tableblock halign-left valign-top"><p class="tableblock">logContent</p></td>
1881+
<td class="tableblock halign-left valign-top"><p class="tableblock">BOOL</p></td>
1882+
<td class="tableblock halign-left valign-top"><p class="tableblock">?</p></td>
1883+
<td class="tableblock halign-left valign-top"><p class="tableblock">Set status if full respond content should be logged.
1884+
Set to false if e.g. bigger binary data should not be processed.</p></td>
1885+
</tr>
18791886
</tbody>
18801887
</table>
18811888
</div>
@@ -1903,14 +1910,21 @@ <h6 id="_return_values_6">Return values</h6>
19031910
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
19041911
<td class="tableblock halign-left valign-top"><p class="tableblock">Response (JSON)</p></td>
19051912
</tr>
1913+
<tr>
1914+
<td class="tableblock halign-left valign-top"><p class="tableblock">response</p></td>
1915+
<td class="tableblock halign-left valign-top"><p class="tableblock">OBJECT<br>
1916+
<a href="#API:Crown:HTTPClient.Response">HTTPClient.Response</a></p></td>
1917+
<td class="tableblock halign-left valign-top"><p class="tableblock">?</p></td>
1918+
<td class="tableblock halign-left valign-top"><p class="tableblock">Response</p></td>
1919+
</tr>
19061920
</tbody>
19071921
</table>
19081922
</div>
19091923
<div class="sect5">
19101924
<h6 id="_sample_auto_generated_17">Sample (auto-generated)</h6>
19111925
<div class="listingblock">
19121926
<div class="content">
1913-
<pre class="CodeRay highlight"><code data-lang="lua">response = CSK_MultiHTTPClient.sendRequestNUM(mode, endpoint, port, header, body, contentType)</code></pre>
1927+
<pre class="CodeRay highlight"><code data-lang="lua">response, response = CSK_MultiHTTPClient.sendRequestNUM(mode, endpoint, port, header, body, contentType, logContent)</code></pre>
19141928
</div>
19151929
</div>
19161930
</div>
@@ -6703,8 +6717,8 @@ <h3 id="API:Enum:CSK_MultiHTTPClient.RequestMode"><span class="api-enum">CSK_Mul
67036717
</div>
67046718
<div id="footer">
67056719
<div id="footer-text">
6706-
Version 2.2.0<br>
6707-
Last updated 2025-05-28 13:47:20 +0200
6720+
Version 2.3.0<br>
6721+
Last updated 2026-01-30 16:27:21 +0100
67086722
</div>
67096723
</div>
67106724
<script type="text/javascript">

0 commit comments

Comments
 (0)