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