aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAutumn <git@autumnfo.rest>2026-05-17 11:00:48 +0100
committerAutumn <git@autumnfo.rest>2026-05-17 11:00:48 +0100
commit1d34c2e5e144728c16807bb53b8eda278a350b4d (patch)
tree5842eec8576f4a7622b334ab2986fbb3eb3479a8
parente5ee58920ad5c5c4209efd9c8f114da7ecf2f698 (diff)
[pawsd] added service fetching utils
-rw-r--r--src/pawsd/service.lua72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/pawsd/service.lua b/src/pawsd/service.lua
new file mode 100644
index 0000000..8cbce77
--- /dev/null
+++ b/src/pawsd/service.lua
@@ -0,0 +1,72 @@
+--
+-- ~~~ response service utils
+--
+
+require("src/utils")
+
+-- setup pawsd
+local pawsd = {}
+pawsd.signature = require("src/pawsd/signature")
+pawsd.record = require("src/pawsd/record")
+pawsd.tag = require("src/pawsd/tag")
+
+-- get index of service
+function getserviceindex (response)
+
+ local indexStart = 15 + pawsd.signature.length(response)
+ return table.extracthex(response, indexStart, indexStart + 1)
+
+end
+
+-- get service flags
+function getserviceflags (response)
+
+ local flagsStart = 17 + pawsd.signature.length(response)
+ return table.extracthex(response, flagsStart, flagsStart + 3)
+
+end
+
+-- get number of records
+function getrecordnumber (response)
+
+ local recordsStart = 21 + pawsd.signature.length(response)
+ return tonumber(table.extracthex(response, recordsStart, recordsStart + 1), 16)
+
+end
+
+-- get all records
+function getallrecords (response)
+
+ print("\nR>--- Getting Records...")
+
+ local records = {}
+ local recordoffset = 23 + pawsd.signature.length(response)
+ local recordnumber = getrecordnumber(response)
+
+ print("\nR>--- Record Offset: " .. recordoffset)
+ print("R>--- Number Of Records: " .. recordnumber)
+
+ for recordindex = 1, recordnumber , 1 do
+
+ print("\nR>--- Getting Record " .. recordindex .. "...")
+
+ local record = pawsd.record.get(response, recordoffset)
+
+ records[recordindex] = record.tags
+ recordoffset = record.endoffset
+
+ end
+
+ return records
+
+end
+
+-- return
+return {
+ index = getserviceindex,
+ flags = getserviceflags,
+ records = {
+ count = getrecordnumber,
+ all = getallrecords
+ }
+}