utils.nim 645 B

123456789101112131415161718192021222324252627
  1. import strutils, strformat, uri
  2. import nimcrypto, regex
  3. const key = "supersecretkey"
  4. proc mimetype*(filename: string): string =
  5. if ".png" in filename:
  6. "image/" & "png"
  7. elif ".jpg" in filename or ".jpeg" in filename:
  8. "image/" & "jpg"
  9. elif ".mp4" in filename:
  10. "video/" & "mp4"
  11. else:
  12. "text/plain"
  13. proc getHmac*(data: string): string =
  14. ($hmac(sha256, key, data))[0 .. 12]
  15. proc getSigUrl*(link: string; path: string): string =
  16. let
  17. sig = getHmac(link)
  18. url = encodeUrl(link)
  19. &"/{path}/{sig}/{url}"
  20. proc cleanFilename*(filename: string): string =
  21. const reg = re"[^A-Za-z0-9._-]"
  22. filename.replace(reg, "_")