vweb: add .mount_static_folder_at/2 , use it instead of app.handle_static in the server_sent_events example
							parent
							
								
									eb4c60877e
								
							
						
					
					
						commit
						cd423251da
					
				|  | @ -1,5 +1,6 @@ | ||||||
| module main | module main | ||||||
| 
 | 
 | ||||||
|  | import os | ||||||
| import rand | import rand | ||||||
| import time | import time | ||||||
| import vweb | import vweb | ||||||
|  | @ -15,7 +16,7 @@ fn main() { | ||||||
| 
 | 
 | ||||||
| pub fn (mut app App) init_once() { | pub fn (mut app App) init_once() { | ||||||
| 	app.serve_static('/favicon.ico', 'favicon.ico', 'img/x-icon') | 	app.serve_static('/favicon.ico', 'favicon.ico', 'img/x-icon') | ||||||
| 	app.handle_static('.', false) | 	app.mount_static_folder_at(os.resource_abs_path('.'), '/') | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub fn (mut app App) index() vweb.Result { | pub fn (mut app App) index() vweb.Result { | ||||||
|  |  | ||||||
|  | @ -575,7 +575,7 @@ fn (mut ctx Context) scan_static_directory(directory_path string, mount_path str | ||||||
| 	files := os.ls(directory_path) or { panic(err) } | 	files := os.ls(directory_path) or { panic(err) } | ||||||
| 	if files.len > 0 { | 	if files.len > 0 { | ||||||
| 		for file in files { | 		for file in files { | ||||||
| 			full_path := directory_path + '/' + file | 			full_path := os.join_path(directory_path, file) | ||||||
| 			if os.is_dir(full_path) { | 			if os.is_dir(full_path) { | ||||||
| 				ctx.scan_static_directory(full_path, mount_path + '/' + file) | 				ctx.scan_static_directory(full_path, mount_path + '/' + file) | ||||||
| 			} else if file.contains('.') && !file.starts_with('.') && !file.ends_with('.') { | 			} else if file.contains('.') && !file.starts_with('.') && !file.ends_with('.') { | ||||||
|  | @ -606,6 +606,19 @@ pub fn (mut ctx Context) handle_static(directory_path string, root bool) bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // mount_static_folder_at - makes all static files in `directory_path` and inside it, available at http://server/mount_path
 | ||||||
|  | // For example: suppose you have called .mount_static_folder_at('/var/share/myassets', '/assets'),
 | ||||||
|  | // and you have a file /var/share/myassets/main.css .
 | ||||||
|  | // => That file will be available at URL: http://server/assets/main.css .
 | ||||||
|  | pub fn (mut ctx Context) mount_static_folder_at(directory_path string, mount_path string) bool { | ||||||
|  | 	if ctx.done || mount_path.len < 1 || mount_path[0] != `/` || !os.exists(directory_path) { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	dir_path := directory_path.trim_right('/') | ||||||
|  | 	ctx.scan_static_directory(dir_path, mount_path[1..]) | ||||||
|  | 	return true | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Serves a file static
 | // Serves a file static
 | ||||||
| // `url` is the access path on the site, `file_path` is the real path to the file, `mime_type` is the file type
 | // `url` is the access path on the site, `file_path` is the real path to the file, `mime_type` is the file type
 | ||||||
| pub fn (mut ctx Context) serve_static(url string, file_path string, mime_type string) { | pub fn (mut ctx Context) serve_static(url string, file_path string, mime_type string) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue