diff --git a/vieter/main.v b/vieter/main.v index d7a1b7d..2978298 100644 --- a/vieter/main.v +++ b/vieter/main.v @@ -4,14 +4,10 @@ import web import os import log import io -import repo const port = 8000 - const buf_size = 1_000_000 -const db_name = 'pieter.db.tar.gz' - struct App { web.Context api_key string [required; web_global] @@ -25,7 +21,7 @@ fn exit_with_message(code int, msg string) { exit(code) } -fn reader_to_file(mut reader io.BufferedReader, length int, path string) ? { +fn reader_to_file(mut reader io.BufferedReader, path string) ? { // Open up a file for writing to mut file := os.create(path) ? defer { @@ -33,26 +29,36 @@ fn reader_to_file(mut reader io.BufferedReader, length int, path string) ? { } mut buf := []byte{len: buf_size} - mut bytes_left := length // Repeat as long as the stream still has data - for bytes_left > 0 { + for { + // TODO don't just endlessly loop if reading keeps failing + println('heey') // TODO check if just breaking here is safe - bytes_read := reader.read(mut buf) or { break } - bytes_left -= bytes_read + bytes_read := reader.read(mut &buf) or { + println('youre here') + break + } + println(bytes_read) mut to_write := bytes_read for to_write > 0 { // TODO don't just loop infinitely here - bytes_written := file.write(buf[bytes_read - to_write..bytes_read]) or { continue } + bytes_written := file.write(buf[bytes_read - to_write..bytes_read]) or { + println("$err.msg") + continue + } + println(bytes_written) to_write = to_write - bytes_written } } + + println('File complete!') } -['/pkgs/:pkg'; put] +[put; '/pkgs/:pkg'] fn (mut app App) put_package(pkg string) web.Result { full_path := os.join_path_single(app.repo_dir, pkg) @@ -60,21 +66,11 @@ fn (mut app App) put_package(pkg string) web.Result { 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 { - return app.text('Failed to upload file.') - } - } else { - return app.text("Content-Type header isn't set.") + reader_to_file(mut app.reader, full_path) or { + return app.text('Failed to upload file.') } - repo.add_package(os.join_path_single(app.repo_dir, db_name), full_path) or { - os.rm(full_path) or { println('Failed to remove $full_path') } - - return app.text('Failed to add package to repo.') - } - - return app.text('Package added successfully.') + return app.text('just stop') } // ['/publish'; post] diff --git a/vieter/repo.v b/vieter/repo.v deleted file mode 100644 index 54dfc38..0000000 --- a/vieter/repo.v +++ /dev/null @@ -1,12 +0,0 @@ -module repo - -import os - -pub fn add_package(db_path string, pkg_path string) ? { - res := os.execute("repo-add '$db_path' '$pkg_path'") - - if res.exit_code != 0 { - println(res.output) - return error('repo-add failed.') - } -} diff --git a/vieter/web/web.v b/vieter/web/web.v index e98ef9b..4e13f3f 100644 --- a/vieter/web/web.v +++ b/vieter/web/web.v @@ -447,13 +447,13 @@ fn handle_conn(mut conn net.TcpConn, mut app T, routes map[string]Route) { return } - // req := http.parse_request(mut reader) or { - // // Prevents errors from being thrown when BufferedReader is empty - // if '$err' != 'none' { - // eprintln('error parsing request: $err') - // } - // return - // } +// req := http.parse_request(mut reader) or { +// // Prevents errors from being thrown when BufferedReader is empty +// if '$err' != 'none' { +// eprintln('error parsing request: $err') +// } +// return +// } // URL Parse url := urllib.parse(head.url) or {