mirror of
https://github.com/glimpse-app/server.git
synced 2025-04-02 10:52:45 -04:00
moved routes to own file
This commit is contained in:
parent
d25038c019
commit
4042b5c98b
3 changed files with 84 additions and 66 deletions
30
src/routes/download.nim
Normal file
30
src/routes/download.nim
Normal file
|
@ -0,0 +1,30 @@
|
|||
# import libs
|
||||
import std/[strutils, os, logging]
|
||||
import jester
|
||||
import norm/[model, sqlite]
|
||||
import ../types/[users, files]
|
||||
import checksums/sha3
|
||||
import ../database
|
||||
|
||||
router download:
|
||||
#[
|
||||
request parameters:
|
||||
token - string - required via header
|
||||
name - string - file name via header
|
||||
returns:
|
||||
success - string/binary - file
|
||||
fail - 403 - invalid token
|
||||
fail - 404 - file doesn't exist
|
||||
]#
|
||||
get "/api/v1/fileByName":
|
||||
var user = newUser()
|
||||
if not db.validToken(user, request.headers["Authorization"]):
|
||||
resp Http403, "Invalid token."
|
||||
|
||||
var file = newFile()
|
||||
try:
|
||||
db.select(file, "File.name = ?", request.headers["name"])
|
||||
except NotFoundError:
|
||||
resp Http404, "File does not exist"
|
||||
|
||||
sendFile file.path
|
50
src/routes/upload.nim
Normal file
50
src/routes/upload.nim
Normal file
|
@ -0,0 +1,50 @@
|
|||
# import libs
|
||||
import std/[strutils, os, logging]
|
||||
import jester
|
||||
import norm/[model, sqlite]
|
||||
import ../types/[users, files]
|
||||
import checksums/sha3
|
||||
import ../database
|
||||
|
||||
router upload:
|
||||
#[
|
||||
request parameters:
|
||||
file - string/binary - required
|
||||
token - string - required via header
|
||||
tags - JSON - optinal
|
||||
returns
|
||||
success - 200 - successful upload
|
||||
fail - 403 - upload failed, invalid token
|
||||
]#
|
||||
post "/api/v1/newFile":
|
||||
|
||||
# fills the new `user` var with saved user data from database
|
||||
var user = newUser()
|
||||
if not db.validToken(user, request.headers["Authorization"]):
|
||||
resp Http403, "Invalid token."
|
||||
|
||||
# pull request form data arguments
|
||||
let fileData = request.formData["file"].body
|
||||
let fileName = request.formData["file"].fields["filename"]
|
||||
var fileTags: string
|
||||
|
||||
# this is a hack, I hate this
|
||||
try:
|
||||
fileTags = request.formData["tags"].body
|
||||
except KeyError:
|
||||
fileTags = "[]"
|
||||
|
||||
# create needed directories if they don't exist already
|
||||
let directory = "uploads/" & user.username & "/"
|
||||
if not dirExists(directory):
|
||||
createDir(directory)
|
||||
|
||||
let filePath = directory & fileName
|
||||
|
||||
# create new file object and add to db
|
||||
var file = newFile(user, filePath, fileName, fileTags)
|
||||
db.insert(file)
|
||||
|
||||
# write the file from memory
|
||||
writeFile(filePath, fileData)
|
||||
resp Http200, "File uploaded."
|
|
@ -8,31 +8,9 @@ import database
|
|||
|
||||
# addHandler newConsoleLogger(fmtStr = "")
|
||||
|
||||
import routes/[auth, delete]
|
||||
import routes/[auth, delete, download, upload]
|
||||
|
||||
routes:
|
||||
#[
|
||||
request parameters:
|
||||
token - string - required via header
|
||||
name - string - file name via header
|
||||
returns:
|
||||
success - string/binary - file
|
||||
fail - 403 - invalid token
|
||||
fail - 404 - file doesn't exist
|
||||
]#
|
||||
get "/api/v1/fileByName":
|
||||
var user = newUser()
|
||||
if not db.validToken(user, request.headers["Authorization"]):
|
||||
resp Http403, "Invalid token."
|
||||
|
||||
var file = newFile()
|
||||
try:
|
||||
db.select(file, "File.name = ?", request.headers["name"])
|
||||
except NotFoundError:
|
||||
resp Http404, "File does not exist"
|
||||
|
||||
sendFile file.path
|
||||
|
||||
#[
|
||||
request parameters:
|
||||
???
|
||||
|
@ -53,49 +31,9 @@ routes:
|
|||
# let index = parseInt(@"index")
|
||||
# resp """indexedImages[index]["tags"]"""
|
||||
|
||||
#[
|
||||
request parameters:
|
||||
file - string/binary - required
|
||||
token - string - required via header
|
||||
tags - JSON - optinal
|
||||
returns
|
||||
success - 200 - successful upload
|
||||
fail - 403 - upload failed, invalid token
|
||||
]#
|
||||
post "/api/v1/newFile":
|
||||
|
||||
# fills the new `user` var with saved user data from database
|
||||
var user = newUser()
|
||||
if not db.validToken(user, request.headers["Authorization"]):
|
||||
resp Http403, "Invalid token."
|
||||
|
||||
# pull request form data arguments
|
||||
let fileData = request.formData["file"].body
|
||||
let fileName = request.formData["file"].fields["filename"]
|
||||
var fileTags: string
|
||||
|
||||
# this is a hack, I hate this
|
||||
try:
|
||||
fileTags = request.formData["tags"].body
|
||||
except KeyError:
|
||||
fileTags = "[]"
|
||||
|
||||
# create needed directories if they don't exist already
|
||||
let directory = "uploads/" & user.username & "/"
|
||||
if not dirExists(directory):
|
||||
createDir(directory)
|
||||
|
||||
let filePath = directory & fileName
|
||||
|
||||
# create new file object and add to db
|
||||
var file = newFile(user, filePath, fileName, fileTags)
|
||||
db.insert(file)
|
||||
|
||||
# write the file from memory
|
||||
writeFile(filePath, fileData)
|
||||
resp Http200, "File uploaded."
|
||||
|
||||
# template respJson*(node: JsonNode) =
|
||||
# resp $node, "application/json"
|
||||
extend auth, ""
|
||||
extend delete, ""
|
||||
extend delete, ""
|
||||
extend download, ""
|
||||
extend upload, ""
|
Loading…
Add table
Reference in a new issue