File Reader
- Eliot Muir
The file reader is very simple example of component to read in files. If you have not done so already please have a read of The problem with no-code solutions to understand the design philosophy here. This is simple starting component to customize to what you really need.
There is only one field to configure - the SourceDir. This is the directory that the component feeds from.
😅 No lol - it’s not is it.
In the first version of this component we did have more configuration fields on it. But taking a step back and thinking from an operations perspective it seemed like the most important field was the source directory.
If I am an operations person, then this is what I need to look at if there is a problem. Everything else just seemed like noise.
You can always change that: Custom Fields
The file matching logic is deliberately isolated in it’s own file which we can see here:
https://bitbucket.org/interfaceware/fromfile/src/main/MatchRules.lua
Why do we put this logic in it’s own file? It’s applying a concept call Separation of Concerns. We simplify code and make it easy to understand by separating it into its own file.
Looking the code you can see that this code will only match files with the extensions hl7, log and txt. You can see the code in action here:
If you need to change it then you have a very simple obvious place to go.
The processing file logic is very straightforward, the source is here:
https://bitbucket.org/interfaceware/fromfile/src/main/ProcessFile.lua
function ProcessFile(FileName)
local Out = FILread(FileName)
iguana.log("Read "..FileName.." ("..#Out.." bytes)");
queue.push{data=Out}
LastFile = FileName
if component.live() then os.remove(FileName) end
end
It inhales the file, queues the contents and deletes it.
If you want to do something different or more complex - you absolutely can.
You do not have to use the components we supply in production.
In fact if you are a large company I would not recommend it. It would make more sense to start with the components we give you. Customize them the way that works for your organization and make your own official git collections.
That makes a lot more sense in terms of giving you the control and standardization needed for large organizations.
Hope that helps and do free to reach out and talk with us.