forked from vieter-v/vieter
refactor(server): clean up server responses a bit
parent
0727d0fd25
commit
b634775ca3
|
@ -1,7 +1,6 @@
|
||||||
module server
|
module server
|
||||||
|
|
||||||
import web
|
import web
|
||||||
import net.http
|
|
||||||
import net.urllib
|
import net.urllib
|
||||||
import web.response { new_data_response, new_response }
|
import web.response { new_data_response, new_response }
|
||||||
import db
|
import db
|
||||||
|
@ -15,7 +14,7 @@ import models { BuildLog, BuildLogFilter }
|
||||||
['/api/v1/logs'; auth; get]
|
['/api/v1/logs'; auth; get]
|
||||||
fn (mut app App) v1_get_logs() web.Result {
|
fn (mut app App) v1_get_logs() web.Result {
|
||||||
filter := models.from_params<BuildLogFilter>(app.query) or {
|
filter := models.from_params<BuildLogFilter>(app.query) or {
|
||||||
return app.json(http.Status.bad_request, new_response('Invalid query parameters.'))
|
return app.json(.bad_request, new_response('Invalid query parameters.'))
|
||||||
}
|
}
|
||||||
logs := app.db.get_build_logs(filter)
|
logs := app.db.get_build_logs(filter)
|
||||||
|
|
||||||
|
@ -25,7 +24,7 @@ fn (mut app App) v1_get_logs() web.Result {
|
||||||
// v1_get_single_log returns the build log with the given id.
|
// v1_get_single_log returns the build log with the given id.
|
||||||
['/api/v1/logs/:id'; auth; get]
|
['/api/v1/logs/:id'; auth; get]
|
||||||
fn (mut app App) v1_get_single_log(id int) web.Result {
|
fn (mut app App) v1_get_single_log(id int) web.Result {
|
||||||
log := app.db.get_build_log(id) or { return app.not_found() }
|
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
||||||
|
|
||||||
return app.json(.ok, new_data_response(log))
|
return app.json(.ok, new_data_response(log))
|
||||||
}
|
}
|
||||||
|
@ -33,7 +32,7 @@ fn (mut app App) v1_get_single_log(id int) web.Result {
|
||||||
// v1_get_log_content returns the actual build log file for the given id.
|
// v1_get_log_content returns the actual build log file for the given id.
|
||||||
['/api/v1/logs/:id/content'; auth; get]
|
['/api/v1/logs/:id/content'; auth; get]
|
||||||
fn (mut app App) v1_get_log_content(id int) web.Result {
|
fn (mut app App) v1_get_log_content(id int) web.Result {
|
||||||
log := app.db.get_build_log(id) or { return app.not_found() }
|
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
||||||
file_name := log.start_time.custom_format('YYYY-MM-DD_HH-mm-ss')
|
file_name := log.start_time.custom_format('YYYY-MM-DD_HH-mm-ss')
|
||||||
full_path := os.join_path(app.conf.data_dir, logs_dir_name, log.target_id.str(), log.arch,
|
full_path := os.join_path(app.conf.data_dir, logs_dir_name, log.target_id.str(), log.arch,
|
||||||
file_name)
|
file_name)
|
||||||
|
@ -57,25 +56,25 @@ fn (mut app App) v1_post_log() web.Result {
|
||||||
start_time_int := app.query['startTime'].int()
|
start_time_int := app.query['startTime'].int()
|
||||||
|
|
||||||
if start_time_int == 0 {
|
if start_time_int == 0 {
|
||||||
return app.json(http.Status.bad_request, new_response('Invalid or missing start time.'))
|
return app.json(.bad_request, new_response('Invalid or missing start time.'))
|
||||||
}
|
}
|
||||||
start_time := time.unix(start_time_int)
|
start_time := time.unix(start_time_int)
|
||||||
|
|
||||||
end_time_int := app.query['endTime'].int()
|
end_time_int := app.query['endTime'].int()
|
||||||
|
|
||||||
if end_time_int == 0 {
|
if end_time_int == 0 {
|
||||||
return app.json(http.Status.bad_request, new_response('Invalid or missing end time.'))
|
return app.json(.bad_request, new_response('Invalid or missing end time.'))
|
||||||
}
|
}
|
||||||
end_time := time.unix(end_time_int)
|
end_time := time.unix(end_time_int)
|
||||||
|
|
||||||
if 'exitCode' !in app.query {
|
if 'exitCode' !in app.query {
|
||||||
return app.json(http.Status.bad_request, new_response('Missing exit code.'))
|
return app.json(.bad_request, new_response('Missing exit code.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
exit_code := app.query['exitCode'].int()
|
exit_code := app.query['exitCode'].int()
|
||||||
|
|
||||||
if 'arch' !in app.query {
|
if 'arch' !in app.query {
|
||||||
return app.json(http.Status.bad_request, new_response("Missing parameter 'arch'."))
|
return app.json(.bad_request, new_response("Missing parameter 'arch'."))
|
||||||
}
|
}
|
||||||
|
|
||||||
arch := app.query['arch']
|
arch := app.query['arch']
|
||||||
|
@ -83,7 +82,7 @@ fn (mut app App) v1_post_log() web.Result {
|
||||||
target_id := app.query['target'].int()
|
target_id := app.query['target'].int()
|
||||||
|
|
||||||
if !app.db.target_exists(target_id) {
|
if !app.db.target_exists(target_id) {
|
||||||
return app.json(http.Status.bad_request, new_response('Unknown target.'))
|
return app.json(.bad_request, new_response('Unknown target.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store log in db
|
// Store log in db
|
||||||
|
@ -105,7 +104,7 @@ fn (mut app App) v1_post_log() web.Result {
|
||||||
os.mkdir_all(repo_logs_dir) or {
|
os.mkdir_all(repo_logs_dir) or {
|
||||||
app.lerror("Couldn't create dir '$repo_logs_dir'.")
|
app.lerror("Couldn't create dir '$repo_logs_dir'.")
|
||||||
|
|
||||||
return app.json(http.Status.internal_server_error, new_response('An error occured while processing the request.'))
|
return app.status(.internal_server_error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,10 +116,10 @@ fn (mut app App) v1_post_log() web.Result {
|
||||||
util.reader_to_file(mut app.reader, length.int(), full_path) or {
|
util.reader_to_file(mut app.reader, length.int(), full_path) or {
|
||||||
app.lerror('An error occured while receiving logs: $err.msg()')
|
app.lerror('An error occured while receiving logs: $err.msg()')
|
||||||
|
|
||||||
return app.json(http.Status.internal_server_error, new_response('Failed to upload logs.'))
|
return app.status(.internal_server_error)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return app.status(http.Status.length_required)
|
return app.status(.length_required)
|
||||||
}
|
}
|
||||||
|
|
||||||
return app.json(.ok, new_data_response(log_id))
|
return app.json(.ok, new_data_response(log_id))
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
module server
|
module server
|
||||||
|
|
||||||
import web
|
import web
|
||||||
import net.http
|
|
||||||
import web.response { new_data_response, new_response }
|
import web.response { new_data_response, new_response }
|
||||||
import db
|
import db
|
||||||
import models { Target, TargetArch, TargetFilter }
|
import models { Target, TargetArch, TargetFilter }
|
||||||
|
@ -10,7 +9,7 @@ import models { Target, TargetArch, TargetFilter }
|
||||||
['/api/v1/targets'; auth; get]
|
['/api/v1/targets'; auth; get]
|
||||||
fn (mut app App) v1_get_targets() web.Result {
|
fn (mut app App) v1_get_targets() web.Result {
|
||||||
filter := models.from_params<TargetFilter>(app.query) or {
|
filter := models.from_params<TargetFilter>(app.query) or {
|
||||||
return app.json(http.Status.bad_request, new_response('Invalid query parameters.'))
|
return app.json(.bad_request, new_response('Invalid query parameters.'))
|
||||||
}
|
}
|
||||||
targets := app.db.get_targets(filter)
|
targets := app.db.get_targets(filter)
|
||||||
|
|
||||||
|
@ -20,7 +19,7 @@ fn (mut app App) v1_get_targets() web.Result {
|
||||||
// v1_get_single_target returns the information for a single target.
|
// v1_get_single_target returns the information for a single target.
|
||||||
['/api/v1/targets/:id'; auth; get]
|
['/api/v1/targets/:id'; auth; get]
|
||||||
fn (mut app App) v1_get_single_target(id int) web.Result {
|
fn (mut app App) v1_get_single_target(id int) web.Result {
|
||||||
target := app.db.get_target(id) or { return app.not_found() }
|
target := app.db.get_target(id) or { return app.status(.not_found) }
|
||||||
|
|
||||||
return app.json(.ok, new_data_response(target))
|
return app.json(.ok, new_data_response(target))
|
||||||
}
|
}
|
||||||
|
@ -37,12 +36,12 @@ fn (mut app App) v1_post_target() web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
mut new_target := models.from_params<Target>(params) or {
|
mut new_target := models.from_params<Target>(params) or {
|
||||||
return app.json(http.Status.bad_request, new_response(err.msg()))
|
return app.json(.bad_request, new_response(err.msg()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure someone doesn't submit an invalid kind
|
// Ensure someone doesn't submit an invalid kind
|
||||||
if new_target.kind !in models.valid_kinds {
|
if new_target.kind !in models.valid_kinds {
|
||||||
return app.json(http.Status.bad_request, new_response('Invalid kind.'))
|
return app.json(.bad_request, new_response('Invalid kind.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
id := app.db.add_target(new_target)
|
id := app.db.add_target(new_target)
|
||||||
|
@ -61,7 +60,7 @@ fn (mut app App) v1_delete_target(id int) web.Result {
|
||||||
app.db.delete_target(id)
|
app.db.delete_target(id)
|
||||||
app.job_queue.invalidate(id)
|
app.job_queue.invalidate(id)
|
||||||
|
|
||||||
return app.json(.ok, new_response(''))
|
return app.status(.ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_patch_target updates a target's data with the given query params.
|
// v1_patch_target updates a target's data with the given query params.
|
||||||
|
|
|
@ -260,13 +260,6 @@ pub fn (mut ctx Context) redirect(url string) Result {
|
||||||
return Result{}
|
return Result{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// not_found Send an not_found response
|
|
||||||
pub fn (mut ctx Context) not_found() Result {
|
|
||||||
ctx.send_custom_response(http_404) or {}
|
|
||||||
|
|
||||||
return Result{}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface DbInterface {
|
interface DbInterface {
|
||||||
db voidptr
|
db voidptr
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue