forked from vieter-v/vieter
				
			refactor(server): clean up server responses a bit
							parent
							
								
									0727d0fd25
								
							
						
					
					
						commit
						b634775ca3
					
				|  | @ -1,7 +1,6 @@ | |||
| module server | ||||
| 
 | ||||
| import web | ||||
| import net.http | ||||
| import net.urllib | ||||
| import web.response { new_data_response, new_response } | ||||
| import db | ||||
|  | @ -15,7 +14,7 @@ import models { BuildLog, BuildLogFilter } | |||
| ['/api/v1/logs'; auth; get] | ||||
| fn (mut app App) v1_get_logs() web.Result { | ||||
| 	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) | ||||
| 
 | ||||
|  | @ -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. | ||||
| ['/api/v1/logs/:id'; auth; get] | ||||
| 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)) | ||||
| } | ||||
|  | @ -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. | ||||
| ['/api/v1/logs/:id/content'; auth; get] | ||||
| 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') | ||||
| 	full_path := os.join_path(app.conf.data_dir, logs_dir_name, log.target_id.str(), log.arch, | ||||
| 		file_name) | ||||
|  | @ -57,25 +56,25 @@ fn (mut app App) v1_post_log() web.Result { | |||
| 	start_time_int := app.query['startTime'].int() | ||||
| 
 | ||||
| 	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) | ||||
| 
 | ||||
| 	end_time_int := app.query['endTime'].int() | ||||
| 
 | ||||
| 	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) | ||||
| 
 | ||||
| 	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() | ||||
| 
 | ||||
| 	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'] | ||||
|  | @ -83,7 +82,7 @@ fn (mut app App) v1_post_log() web.Result { | |||
| 	target_id := app.query['target'].int() | ||||
| 
 | ||||
| 	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 | ||||
|  | @ -105,7 +104,7 @@ fn (mut app App) v1_post_log() web.Result { | |||
| 		os.mkdir_all(repo_logs_dir) or { | ||||
| 			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 { | ||||
| 			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 { | ||||
| 		return app.status(http.Status.length_required) | ||||
| 		return app.status(.length_required) | ||||
| 	} | ||||
| 
 | ||||
| 	return app.json(.ok, new_data_response(log_id)) | ||||
|  |  | |||
|  | @ -1,7 +1,6 @@ | |||
| module server | ||||
| 
 | ||||
| import web | ||||
| import net.http | ||||
| import web.response { new_data_response, new_response } | ||||
| import db | ||||
| import models { Target, TargetArch, TargetFilter } | ||||
|  | @ -10,7 +9,7 @@ import models { Target, TargetArch, TargetFilter } | |||
| ['/api/v1/targets'; auth; get] | ||||
| fn (mut app App) v1_get_targets() web.Result { | ||||
| 	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) | ||||
| 
 | ||||
|  | @ -20,7 +19,7 @@ fn (mut app App) v1_get_targets() web.Result { | |||
| // v1_get_single_target returns the information for a single target. | ||||
| ['/api/v1/targets/:id'; auth; get] | ||||
| 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)) | ||||
| } | ||||
|  | @ -37,12 +36,12 @@ fn (mut app App) v1_post_target() web.Result { | |||
| 	} | ||||
| 
 | ||||
| 	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 | ||||
| 	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) | ||||
|  | @ -61,7 +60,7 @@ fn (mut app App) v1_delete_target(id int) web.Result { | |||
| 	app.db.delete_target(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. | ||||
|  |  | |||
|  | @ -260,13 +260,6 @@ pub fn (mut ctx Context) redirect(url string) 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 { | ||||
| 	db voidptr | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue