forked from vieter-v/vieter
				
			refactor(web): some small cleanup
							parent
							
								
									e23635a1d3
								
							
						
					
					
						commit
						9268ef0302
					
				| 
						 | 
					@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 | 
				
			||||||
  providing a Git repository
 | 
					  providing a Git repository
 | 
				
			||||||
* CLI commands for searching the AUR & directly adding packages
 | 
					* CLI commands for searching the AUR & directly adding packages
 | 
				
			||||||
* HTTP routes for removing packages, arch-repos & repos
 | 
					* HTTP routes for removing packages, arch-repos & repos
 | 
				
			||||||
 | 
					* All endpoints serving files now support HTTP byte range requests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Changed
 | 
					### Changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 | 
				
			||||||
* Branch name for 'git' targets is now optional; if not provided, the
 | 
					* Branch name for 'git' targets is now optional; if not provided, the
 | 
				
			||||||
  repository will be cloned with the default branch
 | 
					  repository will be cloned with the default branch
 | 
				
			||||||
* Build containers now explicitely set the PATH variable
 | 
					* Build containers now explicitely set the PATH variable
 | 
				
			||||||
 | 
					* Refactor of web framework
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Removed
 | 
					### Removed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ import web.response { new_response }
 | 
				
			||||||
['/:repo/:arch/:pkg'; delete]
 | 
					['/:repo/:arch/:pkg'; delete]
 | 
				
			||||||
fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result {
 | 
					fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result {
 | 
				
			||||||
	if !app.is_authorized() {
 | 
						if !app.is_authorized() {
 | 
				
			||||||
		return app.json(http.Status.unauthorized, new_response('Unauthorized.'))
 | 
							return app.json(.unauthorized, new_response('Unauthorized.'))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or {
 | 
						res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ pub struct Result {}
 | 
				
			||||||
pub const (
 | 
					pub const (
 | 
				
			||||||
	methods_with_form = [http.Method.post, .put, .patch]
 | 
						methods_with_form = [http.Method.post, .put, .patch]
 | 
				
			||||||
	headers_close     = http.new_custom_header_from_map({
 | 
						headers_close     = http.new_custom_header_from_map({
 | 
				
			||||||
		'Server':                           'VWeb'
 | 
							'Server':                           'Vieter'
 | 
				
			||||||
		http.CommonHeader.connection.str(): 'close'
 | 
							http.CommonHeader.connection.str(): 'close'
 | 
				
			||||||
	}) or { panic('should never fail') }
 | 
						}) or { panic('should never fail') }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,15 +91,22 @@ fn (mut ctx Context) send_reader(mut reader io.Reader, size u64) ? {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// send_custom_response sends the given http.Response to the client. It can be
 | 
				
			||||||
 | 
					// used to overwrite the Context object & send a completely custom
 | 
				
			||||||
 | 
					// http.Response instead.
 | 
				
			||||||
 | 
					fn (mut ctx Context) send_custom_response(resp &http.Response) ? {
 | 
				
			||||||
 | 
						ctx.send_string(resp.bytestr())?
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// send_response_header constructs a valid HTTP response with an empty body &
 | 
					// send_response_header constructs a valid HTTP response with an empty body &
 | 
				
			||||||
// sends it to the client.
 | 
					// sends it to the client.
 | 
				
			||||||
pub fn (mut ctx Context) send_response_header() ? {
 | 
					pub fn (mut ctx Context) send_response_header() ? {
 | 
				
			||||||
	mut resp := http.Response{
 | 
						mut resp := http.Response{
 | 
				
			||||||
		header: ctx.header.join(headers_close)
 | 
							header: ctx.header.join(headers_close)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	resp.set_version(.v1_1)
 | 
					 | 
				
			||||||
	resp.set_status(ctx.status)
 | 
						resp.set_status(ctx.status)
 | 
				
			||||||
	ctx.send_string(resp.bytestr())?
 | 
					
 | 
				
			||||||
 | 
						ctx.send_custom_response(resp)?
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// send is a convenience function for sending the HTTP response with an empty
 | 
					// send is a convenience function for sending the HTTP response with an empty
 | 
				
			||||||
| 
						 | 
					@ -222,10 +229,8 @@ pub fn (mut ctx Context) status(status http.Status) Result {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// server_error Response a server error
 | 
					// server_error Response a server error
 | 
				
			||||||
pub fn (mut ctx Context) server_error(ecode int) Result {
 | 
					pub fn (mut ctx Context) server_error(ecode int) Result {
 | 
				
			||||||
	$if debug {
 | 
						ctx.send_custom_response(http_500) or {}
 | 
				
			||||||
		eprintln('> ctx.server_error ecode: $ecode')
 | 
					
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	ctx.send_string(http_500.bytestr()) or {}
 | 
					 | 
				
			||||||
	return Result{}
 | 
						return Result{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -234,23 +239,17 @@ pub fn (mut ctx Context) redirect(url string) Result {
 | 
				
			||||||
	mut resp := http_302
 | 
						mut resp := http_302
 | 
				
			||||||
	resp.header = resp.header.join(ctx.header)
 | 
						resp.header = resp.header.join(ctx.header)
 | 
				
			||||||
	resp.header.add(.location, url)
 | 
						resp.header.add(.location, url)
 | 
				
			||||||
	ctx.send_string(resp.bytestr()) or { return Result{} }
 | 
					
 | 
				
			||||||
 | 
						ctx.send_custom_response(resp) or {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return Result{}
 | 
						return Result{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// not_found Send an not_found response
 | 
					// not_found Send an not_found response
 | 
				
			||||||
pub fn (mut ctx Context) not_found() Result {
 | 
					pub fn (mut ctx Context) not_found() Result {
 | 
				
			||||||
	return ctx.status(http.Status.not_found)
 | 
						ctx.send_custom_response(http_404) or {}
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// add_header Adds an header to the response with key and val
 | 
						return Result{}
 | 
				
			||||||
pub fn (mut ctx Context) add_header(key string, val string) {
 | 
					 | 
				
			||||||
	ctx.header.add_custom(key, val) or {}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// get_header Returns the header data from the key
 | 
					 | 
				
			||||||
pub fn (ctx &Context) get_header(key string) string {
 | 
					 | 
				
			||||||
	return ctx.req.header.get_custom(key) or { '' }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface DbInterface {
 | 
					interface DbInterface {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue