api.nim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import asynchttpserver, asyncdispatch, strutils from strtabs import StringTableRef, newStringTable import types, core proc resError*(code: HttpCode, message: string): Response = result.code = code result.content = """{"code": $1, "message":"$2"}""" % [($code)[0..2], message] result.headers = CT_JSON.newStringTable proc resDocumentNotFound*(id): Response = resError(Http404, "Document '$1' not found." % id) proc getRawDocument*(LS: LiteStore, id: string, options = newQueryOptions()): Response = let doc = LS.store.retrieveRawDocument(id, options) result.headers = CT_JSON.newStringTable if doc == "": result = resDocumentNotFound(id) else: result.content = doc result.code = Http200 proc getDocument*(LS: LiteStore, id: string, options = newQueryOptions()): Response = let doc = LS.store.retrieveDocument(id, options) if doc.data == "": result = resDocumentNotFound(id) else: result.headers = doc.contenttype.ctHeader result.content = doc.data result.code = Http200 proc getRawDocuments*(LS: LiteStore, options = newQueryOptions()): Response = let docs = LS.store.retrieveRawDocuments(options) # TODO Implement query options if docs.len == 0: result = resError(Http404, "No documents found.") else: result.headers = ctJsonHeader() result.content = docs result.code = Http200 |