forked from vieter-v/vieter
Compare commits
No commits in common. "93c0dc9c4f69cde6e91d270c43c3f0e8b92234d3" and "5edbaf9b4b7769ea00ea964d6366c924d9ca0e22" have entirely different histories.
93c0dc9c4f
...
5edbaf9b4b
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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.')
|
||||
}
|
||||
}
|
||||
|
|
@ -447,13 +447,13 @@ fn handle_conn<T>(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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue