Add HTTP api
This commit is contained in:
42
src/state.nim
Normal file
42
src/state.nim
Normal file
@@ -0,0 +1,42 @@
|
||||
import tables, strtabs, sequtils, nativesockets
|
||||
import ../lib/dns
|
||||
|
||||
type
|
||||
RecordKey* = tuple
|
||||
name: string
|
||||
dtype: DnsType
|
||||
|
||||
type
|
||||
RecordsTable* = Table[RecordKey, seq[string]]
|
||||
|
||||
type
|
||||
AppConfig* = object
|
||||
users*: StringTableRef
|
||||
base*: string
|
||||
apiPort*: Port
|
||||
dnsPort*: Port
|
||||
|
||||
func trimName*(name: string): string =
|
||||
if name[^1] == '.':
|
||||
return name[0 .. ^2]
|
||||
else:
|
||||
return name
|
||||
|
||||
proc addRecord*(records: var RecordsTable, key: RecordKey, record: string) =
|
||||
if records.hasKey(key):
|
||||
records[key].add(record)
|
||||
else:
|
||||
records[key] = @[record]
|
||||
|
||||
proc delRecord*(records: var RecordsTable, key: RecordKey, record: string) =
|
||||
if not records.hasKey(key):
|
||||
return
|
||||
|
||||
records[key].keepItIf(it != record)
|
||||
|
||||
if len(records[key]) == 0:
|
||||
records.del(key)
|
||||
|
||||
# TODO: don't use a global for this
|
||||
var records* {.threadvar.}: RecordsTable
|
||||
records = initTable[RecordKey, seq[string]]()
|
||||
Reference in New Issue
Block a user