import parsecfg except Config
import net, types, strutils

proc get[T](config: parseCfg.Config; s, v: string; default: T): T =
  let val = config.getSectionValue(s, v)
  if val.len == 0: return default

  when T is int: parseInt(val)
  elif T is bool: parseBool(val)
  elif T is string: val

proc getConfig*(path: string): Config =
  var cfg = loadConfig(path)

  Config(
    address: cfg.get("Server", "address", "0.0.0.0"),
    port: cfg.get("Server", "port", 8080),
    useHttps: cfg.get("Server", "https", true),
    title: cfg.get("Server", "title", "Nitter"),
    staticDir: cfg.get("Server", "staticDir", "./public"),

    cacheDir: cfg.get("Cache", "directory", "/tmp/nitter"),
    profileCacheTime: cfg.get("Cache", "profileMinutes", 10)
  )
