diff --git a/src/routes/auth.nim b/src/routes/auth.nim index ed5cae9..dbe7983 100644 --- a/src/routes/auth.nim +++ b/src/routes/auth.nim @@ -16,7 +16,7 @@ proc createAuthenticationRoutes*() = returns: JSON ]# post "/api/v1/newUser": - info "Endpoint used.\n" & reqInfo + debug "Endpoint used.\n" & reqInfo if @"username".isEmptyOrWhitespace() or @"email".isEmptyOrWhitespace() or @"password".isEmptyOrWhitespace(): @@ -60,7 +60,7 @@ proc createAuthenticationRoutes*() = returns: JSON ]# get "/api/v1/newSession": - info "Endpoint used.\n" & reqInfo + debug "Endpoint used.\n" & reqInfo var user = newUser() @@ -86,6 +86,6 @@ proc createAuthenticationRoutes*() = add("\"token\": \"" & user.token & "\"") add "}]" - info "User's token replaced.\n" & reqInfo + info "Replaced token.\n" & reqInfo resp Http200, userToken & "\n", "application/json" diff --git a/src/routes/delete.nim b/src/routes/delete.nim index 4b269b3..7da4625 100644 --- a/src/routes/delete.nim +++ b/src/routes/delete.nim @@ -1,4 +1,4 @@ -import std/[strutils, os, httpclient, strformat, with] +import std/[strutils, os, httpclient, strformat, with, logging] import jester import norm/model import norm/postgres except error @@ -13,6 +13,7 @@ proc purgeUserFiles*(token: string): Future[string] {.async.} = try: return await client.deleteContent(fmt"http://{cfg.bindAddr}:{cfg.port}/api/v1/files") finally: + info "Finished deleting user's files.\n" client.close() @@ -24,13 +25,15 @@ proc createDeletionRoutes*(cfg: Cfg) = returns: JSON ]# delete "/api/v1/userCompletely": + debug "Endpoint used.\n" & reqInfo var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" discard waitFor purgeUserFiles(H"Authorization") db.delete(user) + info "User deactivated.\n" & reqInfo resp Http200, "[]\n", "application/json" #[ @@ -39,15 +42,16 @@ proc createDeletionRoutes*(cfg: Cfg) = returns: JSON ]# delete "/api/v1/user": + debug "Endpoint used.\n" & reqInfo var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" db.delete(user) + info "User account deleted.\n" & reqInfo resp Http200, "[]\n", "application/json" - #! endpoint crashes server #[ request parameters: token - string - required via header @@ -55,15 +59,16 @@ proc createDeletionRoutes*(cfg: Cfg) = returns: JSON ]# delete "/api/v1/file": + debug "Endpoint used.\n" & reqInfo var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" var file = newFile() try: db.select(file, """"File".name = $1 AND "File".owner = $2""", H"Name", user) except NotFoundError: - resp Http404, "File does not exist.\n" + respErr Http404, "File does not exist.\n" removeFile(file.path) db.delete(file) @@ -75,6 +80,8 @@ proc createDeletionRoutes*(cfg: Cfg) = add "[{" add("\"fileCount\": \"" & $user.fileCount & "\"") add "}]" + + info "Deleted file.\n" & reqInfo resp Http200, userFileCount & "\n", "application/json" #[ @@ -84,15 +91,16 @@ proc createDeletionRoutes*(cfg: Cfg) = 200 - deleted all of the user's file from db and filesystem only ]# delete "/api/v1/files": + debug "Endpoint used.\n" & reqInfo var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" var listOfFiles = @[newFile()] try: db.select(listOfFiles, """"File".owner = $1""", user) except NotFoundError: # this error does not occur even if no files exist - resp Http404, "Files do not exist.\n" + respErr Http404, "Files do not exist.\n" for i in 0..(listOfFiles.len - 1): var file = listOfFiles[i] @@ -101,4 +109,5 @@ proc createDeletionRoutes*(cfg: Cfg) = db.update(user) removeDir(cfg.uploadDir & user.username & "/") + info "Deleting user's files.\n" & reqInfo resp Http200, "[]\n", "application/json" diff --git a/src/routes/download.nim b/src/routes/download.nim index ccc1c13..ea5628f 100644 --- a/src/routes/download.nim +++ b/src/routes/download.nim @@ -1,4 +1,4 @@ -import std/strutils +import std/[strutils, logging] import jester import norm/postgres except error import ../types/[users, files] @@ -13,16 +13,19 @@ proc createDownloadRoutes*() = returns: string/binary ]# get "/api/v1/fileByName": + debug "Endpoint used.\n" & reqInfo + var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" var file = newFile() try: db.select(file, """"File".name = $1 AND "File".owner = $2""", H"Name", user) except NotFoundError: - resp Http404, "File does not exist.\n" + respErr Http404, "File does not exist.\n" + info "User downloaded file.\n" & reqInfo sendFile file.path #[ @@ -31,15 +34,16 @@ proc createDownloadRoutes*() = returns: JSON ]# get "/api/v1/listOfAllFiles": + debug "Endpoint used.\n" & reqInfo var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" var listOfFiles = @[newFile()] try: db.select(listOfFiles, """"File".owner = $1""", user.id) except NotFoundError: - resp Http404, "Files does not exist.\n" + respErr Http404, "Files does not exist.\n" var allFiles: string @@ -48,4 +52,5 @@ proc createDownloadRoutes*() = "\", \"tags\": " & file.tags & "}," allFiles = "[" & allFiles[0..^2] & "]" # trim last comma + info "List user's file.\n" & reqInfo resp Http200, allFiles & "\n", "application/json" diff --git a/src/routes/update.nim b/src/routes/update.nim index 6603275..94363f7 100644 --- a/src/routes/update.nim +++ b/src/routes/update.nim @@ -1,4 +1,4 @@ -import std/[strutils, os, with] +import std/[strutils, os, with, logging] import jester import norm/postgres except error import ../types/[users, files] @@ -6,25 +6,18 @@ import ../[database, helpers] proc createUpdateRoutes*() = router update: - #[ - request parameters: - ??? - returns: - ??? - ]# - # put "/api/v1/newTags": - + #[ request parameters: token - string - required via header name - string - old file name via header name - string - new file name via header - returns: JSON ]# put "/api/v1/newFileName": + debug "Endpoint used.\n" & reqInfo var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" let oldName = H"Old name" @@ -34,14 +27,14 @@ proc createUpdateRoutes*() = try: db.select(file, """"File".name = $1 AND "File".owner = $2""", oldName, user) except NotFoundError: - resp Http404, "File does not exist.\n" + respErr Http404, "File does not exist.\n" block FileDoesNotExistCheck: try: db.select(file, """"File".name = $1 AND "File".owner = $2""", newName, user) except NotFoundError: break FileDoesNotExistCheck - resp Http403, "File with that name already exists.\n" + respErr "File with that name already exists.\n" let newPath = file.path[0..^file.name.len+1] & newName moveFile(file.path, newPath) @@ -58,5 +51,5 @@ proc createUpdateRoutes*() = add("\"tags\": \"" & file.tags & "\"") add "}]" - + info "File renamed.\n" & reqInfo resp Http200, fileInfo & "\n", "application/json" diff --git a/src/routes/upload.nim b/src/routes/upload.nim index a8c5abe..3cbe330 100644 --- a/src/routes/upload.nim +++ b/src/routes/upload.nim @@ -1,4 +1,4 @@ -import std/[strutils, os, json, with] +import std/[strutils, os, json, with, logging] import jester import norm/model import norm/postgres except error @@ -16,10 +16,11 @@ proc createUploadRoutes*(cfg: Cfg) = returns: JSON ]# post "/api/v1/newFile": + debug "Endpoint used.\n" & reqInfo # fills the new `user` var with saved user data from database var user = newUser() if not db.validToken(user, H"Authorization"): - resp Http403, "Invalid token.\n" + respErr "Invalid token.\n" # pull request form data arguments let fileData = request.formData["file"].body @@ -35,7 +36,7 @@ proc createUploadRoutes*(cfg: Cfg) = except KeyError: fileTags = "[]" except: # "except JsonError:" doesn't work for some reason - resp Http400, "Bad JSON.\n" + respErr Http400, "Bad JSON.\n" # create needed directories if they don't exist already let directory = cfg.uploadDir & user.username & "/" @@ -49,7 +50,7 @@ proc createUploadRoutes*(cfg: Cfg) = try: db.insert(file) except DbError: - resp Http403, "A file with this name already exists.\n" + respErr "A file with this name already exists.\n" db.update(user) # write the file from memory @@ -59,4 +60,6 @@ proc createUploadRoutes*(cfg: Cfg) = add "[{" add("\"fileCount\": \"" & $user.fileCount & "\"") add "}]" + + info "File uploaded.\n" & reqInfo resp Http200, userFileCount & "\n", "application/json"