forked from vieter-v/vieter
				
			Moved routes into own file
							parent
							
								
									09d1b5458f
								
							
						
					
					
						commit
						dc98c910c4
					
				| 
						 | 
				
			
			@ -4,7 +4,6 @@ import web
 | 
			
		|||
import os
 | 
			
		||||
import log
 | 
			
		||||
import io
 | 
			
		||||
import repo
 | 
			
		||||
 | 
			
		||||
const port = 8000
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -51,40 +50,6 @@ fn reader_to_file(mut reader io.BufferedReader, length int, path string) ? {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
['/pkgs/:pkg'; put]
 | 
			
		||||
fn (mut app App) put_package(pkg string) web.Result {
 | 
			
		||||
	full_path := os.join_path_single(app.repo_dir, pkg)
 | 
			
		||||
 | 
			
		||||
	if os.exists(full_path) {
 | 
			
		||||
		app.lwarn("Tried to upload duplicate package '$pkg'")
 | 
			
		||||
 | 
			
		||||
		return app.text('File already exists.')
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if length := app.req.header.get(.content_length) {
 | 
			
		||||
		reader_to_file(mut app.reader, length.int(), full_path) or {
 | 
			
		||||
			app.lwarn("Failed to upload package '$pkg'")
 | 
			
		||||
 | 
			
		||||
			return app.text('Failed to upload file.')
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		app.lwarn("Tried to upload package '$pkg' without specifying a Content-Length.")
 | 
			
		||||
		return app.text("Content-Type header isn't set.")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	repo.add_package(os.join_path_single(app.repo_dir, db_name), full_path) or {
 | 
			
		||||
		app.linfo("Failed to add package '$pkg' to database.")
 | 
			
		||||
 | 
			
		||||
		os.rm(full_path) or { println('Failed to remove $full_path') }
 | 
			
		||||
 | 
			
		||||
		return app.text('Failed to add package to repo.')
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	app.linfo("Uploaded package '$pkg'.")
 | 
			
		||||
 | 
			
		||||
	return app.text('Package added successfully.')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
	// Configure logger
 | 
			
		||||
	log_level_str := os.getenv_opt('LOG_LEVEL') or { 'WARN' }
 | 
			
		||||
| 
						 | 
				
			
			@ -99,9 +64,6 @@ fn main() {
 | 
			
		|||
 | 
			
		||||
	logger.set_full_logpath(log_file)
 | 
			
		||||
	logger.log_to_console_too()
 | 
			
		||||
	// logger.set
 | 
			
		||||
	logger.debug('Logger set up.')
 | 
			
		||||
	logger.flush()
 | 
			
		||||
 | 
			
		||||
	defer {
 | 
			
		||||
		logger.info('Flushing log file')
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +83,7 @@ fn main() {
 | 
			
		|||
			exit_with_message(2, "Failed to create repo directory '$repo_dir'.")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		println("Repo directory '$repo_dir' created.")
 | 
			
		||||
		logger.info("Created repo directory '$repo_dir'")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	web.run(&App{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
module main
 | 
			
		||||
 | 
			
		||||
import web
 | 
			
		||||
import os
 | 
			
		||||
import repo
 | 
			
		||||
 | 
			
		||||
['/pkgs/:pkg'; put]
 | 
			
		||||
fn (mut app App) put_package(pkg string) web.Result {
 | 
			
		||||
	full_path := os.join_path_single(app.repo_dir, pkg)
 | 
			
		||||
 | 
			
		||||
	if os.exists(full_path) {
 | 
			
		||||
		app.lwarn("Tried to upload duplicate package '$pkg'")
 | 
			
		||||
 | 
			
		||||
		return app.text('File already exists.')
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if length := app.req.header.get(.content_length) {
 | 
			
		||||
		app.ldebug("Uploading $length bytes to package '$pkg'")
 | 
			
		||||
		reader_to_file(mut app.reader, length.int(), full_path) or {
 | 
			
		||||
			app.lwarn("Failed to upload package '$pkg'")
 | 
			
		||||
 | 
			
		||||
			return app.text('Failed to upload file.')
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		app.lwarn("Tried to upload package '$pkg' without specifying a Content-Length.")
 | 
			
		||||
		return app.text("Content-Type header isn't set.")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	repo.add_package(os.join_path_single(app.repo_dir, db_name), full_path) or {
 | 
			
		||||
		app.linfo("Failed to add package '$pkg' to database.")
 | 
			
		||||
 | 
			
		||||
		os.rm(full_path) or { println('Failed to remove $full_path') }
 | 
			
		||||
 | 
			
		||||
		return app.text('Failed to add package to repo.')
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	app.linfo("Uploaded package '$pkg'.")
 | 
			
		||||
 | 
			
		||||
	return app.text('Package added successfully.')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue