This post was originally written for Iguana 5 so it uses version 5 screenshots, and may contain out of date references.
Description
This Web Server implementation is very basic.
Simple web service example can be found in this Wiki.
The uniqueness of this bare bones implementation is in fact that we will receive from ASTM TCP Server, located on another physical machine, one HTTP POST request at a time.
Each request will POST JSON object in this request body.
This JSON object contains set of ASTM message Frames, i.e. one complete ASTM message.
Received ASTM message, still in form of JSON object, is pushed into Iguana queue for any further processing by any channel.
Configuration
Channel Source Component is configured is configured as shown below.
Not to forget to adjust ‘path’ parameter in channel Source configuration.
Channel Destination Component is of type “To Channel”.
Iguana’s HTTP(S) Channel Settings used with this example shown on capture below.
Code
The only Translator script for this channel is in ‘main’ module.
There are no configurable parameters in this Translator script.
function main(Data) iguana.logInfo(Data) if (iguana.isTest()) then readPOST(Data) else local Success, Err = pcall(readPOST,Data) if not Success then net.http.respond{body=json.serialize{data={Error=Err}}} end end end function readPOST(Data) local req = net.http.parseRequest{data=Data} if req.body then queue.push{data=req.body} net.http.respond{ entity_type= 'text/xml', 'got it', debug_result=true} end end
The complete ASTM_Webserver_From_HTTPS.zip available for download.
Processing results analysis
Example of received ASTM message can be seen in below capture from channel Logs.
Careful inspection of Hex dump will reveal that all <STX>, <ETB>, and <ETX> control characters had been preserved, and frame segments terminated by <CR>.