minor fixes and formatting
This commit is contained in:
parent
9a1cabcb06
commit
5fdbe2bc6c
5 changed files with 27 additions and 46 deletions
9
.vscode/tasks.json
vendored
9
.vscode/tasks.json
vendored
|
|
@ -15,13 +15,6 @@
|
||||||
"label": "Run Project",
|
"label": "Run Project",
|
||||||
"type": "cargo",
|
"type": "cargo",
|
||||||
"command": "run",
|
"command": "run",
|
||||||
"dependsOn": [
|
|
||||||
"Build Project"
|
|
||||||
],
|
|
||||||
"args": [
|
|
||||||
"--bin=shrupl",
|
|
||||||
"--package=shrupl"
|
|
||||||
],
|
|
||||||
"env": {
|
"env": {
|
||||||
"RUST_LOG": "shrupl=info",
|
"RUST_LOG": "shrupl=info",
|
||||||
},
|
},
|
||||||
|
|
@ -34,8 +27,6 @@
|
||||||
"command": "clippy",
|
"command": "clippy",
|
||||||
"args": [
|
"args": [
|
||||||
"--fix",
|
"--fix",
|
||||||
"--bin=shrupl",
|
|
||||||
"--package=shrupl",
|
|
||||||
"--allow-dirty",
|
"--allow-dirty",
|
||||||
"--allow-staged",
|
"--allow-staged",
|
||||||
"--",
|
"--",
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ fn main() {
|
||||||
|
|
||||||
let alias = Alias::new(Uri::with_protocol(args.proto, args.url), args.alias);
|
let alias = Alias::new(Uri::with_protocol(args.proto, args.url), args.alias);
|
||||||
|
|
||||||
let share = NewShareRequest::new(args.name, args.desc, 10);
|
let share = NewShareRequest::new(args.name, args.desc, args.views);
|
||||||
let share = Share::create(&agent, &alias, share).unwrap();
|
let share = Share::create(&agent, &alias, share).unwrap();
|
||||||
info!("share: {share:?}");
|
info!("share: {share:?}");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,7 @@ impl Iterator for FileChunks<'_> {
|
||||||
f.seek(SeekFrom::Start(offset)).ok()?;
|
f.seek(SeekFrom::Start(offset)).ok()?;
|
||||||
|
|
||||||
let mut bytes = vec![0; self.csize];
|
let mut bytes = vec![0; self.csize];
|
||||||
let read_len = f
|
let read_len = (f.read(&mut bytes))
|
||||||
.read(&mut bytes)
|
|
||||||
.inspect_err(|e| error!("Error reading file: {e}"))
|
.inspect_err(|e| error!("Error reading file: {e}"))
|
||||||
.ok()?;
|
.ok()?;
|
||||||
bytes.truncate(read_len);
|
bytes.truncate(read_len);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
mod chunks;
|
mod chunks;
|
||||||
|
|
||||||
use std::{ffi::OsStr, fs::metadata, io, path::PathBuf};
|
use std::{
|
||||||
|
ffi::OsStr,
|
||||||
|
fs::metadata,
|
||||||
|
io::{self, ErrorKind},
|
||||||
|
path::PathBuf,
|
||||||
|
};
|
||||||
|
|
||||||
use log::{debug, error};
|
use log::{debug, error};
|
||||||
use ureq::{Error::Other, http::StatusCode};
|
use ureq::{Error::Other, http::StatusCode};
|
||||||
|
|
@ -23,18 +28,19 @@ impl File {
|
||||||
pub fn new(path: impl Into<PathBuf>) -> io::Result<Self> {
|
pub fn new(path: impl Into<PathBuf>) -> io::Result<Self> {
|
||||||
let path: PathBuf = path.into();
|
let path: PathBuf = path.into();
|
||||||
|
|
||||||
let name = path
|
let m = metadata(&path)?;
|
||||||
.file_name()
|
if !m.is_file() {
|
||||||
.and_then(OsStr::to_str)
|
return Err(io::Error::new(ErrorKind::NotFound, "not a file"));
|
||||||
.unwrap_or("file.bin")
|
}
|
||||||
.to_string();
|
|
||||||
|
|
||||||
let size = metadata(&path)?.len();
|
let name = (path.file_name().and_then(OsStr::to_str))
|
||||||
|
.ok_or_else(|| io::Error::new(ErrorKind::NotFound, "bad file name"))?
|
||||||
|
.to_string();
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
path,
|
path,
|
||||||
name,
|
name,
|
||||||
size,
|
size: m.len(),
|
||||||
patch_uri: None,
|
patch_uri: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -44,12 +50,9 @@ impl File {
|
||||||
return Err(Other("patch_uri already set".into()));
|
return Err(Other("patch_uri already set".into()));
|
||||||
}
|
}
|
||||||
|
|
||||||
let endpoint = share
|
let endpoint = (share.alias).get_endpoint(format!("alias/upload/{}/files/tus", share.id));
|
||||||
.alias
|
|
||||||
.get_endpoint(format!("alias/upload/{}/files/tus", share.id));
|
|
||||||
|
|
||||||
let res = http
|
let res = (http.post(endpoint))
|
||||||
.post(endpoint)
|
|
||||||
.sharry_header(share.alias)
|
.sharry_header(share.alias)
|
||||||
.header("Sharry-File-Name", &self.name)
|
.header("Sharry-File-Name", &self.name)
|
||||||
.header("Upload-Length", self.size)
|
.header("Upload-Length", self.size)
|
||||||
|
|
@ -59,9 +62,7 @@ impl File {
|
||||||
return Err(Other("unexpected response status".into()));
|
return Err(Other("unexpected response status".into()));
|
||||||
}
|
}
|
||||||
|
|
||||||
let location = res
|
let location = (res.headers().get("Location"))
|
||||||
.headers()
|
|
||||||
.get("Location")
|
|
||||||
.ok_or_else(|| Other("Location header not found".into()))?
|
.ok_or_else(|| Other("Location header not found".into()))?
|
||||||
.to_str()
|
.to_str()
|
||||||
.map_err(|_| Other("Location header invalid".into()))?
|
.map_err(|_| Other("Location header invalid".into()))?
|
||||||
|
|
@ -87,15 +88,11 @@ impl File {
|
||||||
alias: &Alias,
|
alias: &Alias,
|
||||||
chunk: &Chunk,
|
chunk: &Chunk,
|
||||||
) -> Result<(), ureq::Error> {
|
) -> Result<(), ureq::Error> {
|
||||||
let patch_uri = self
|
let patch_uri = (self.patch_uri.as_ref()).ok_or_else(|| Other("unset patch_uri".into()))?;
|
||||||
.patch_uri
|
|
||||||
.as_ref()
|
|
||||||
.ok_or_else(|| Other("unset patch_uri".into()))?;
|
|
||||||
|
|
||||||
debug!("upload uri: {patch_uri:?}");
|
debug!("upload uri: {patch_uri:?}");
|
||||||
|
|
||||||
let res = http
|
let res = (http.patch(patch_uri))
|
||||||
.patch(patch_uri)
|
|
||||||
.sharry_header(alias)
|
.sharry_header(alias)
|
||||||
.header("Upload-Offset", chunk.offset)
|
.header("Upload-Offset", chunk.offset)
|
||||||
.send(&chunk.bytes)?;
|
.send(&chunk.bytes)?;
|
||||||
|
|
@ -104,14 +101,12 @@ impl File {
|
||||||
return Err(Other("unexpected response status".into()));
|
return Err(Other("unexpected response status".into()));
|
||||||
}
|
}
|
||||||
|
|
||||||
let offset = res
|
let offset = (res.headers().get("Upload-Offset"))
|
||||||
.headers()
|
|
||||||
.get("Upload-Offset")
|
|
||||||
.ok_or_else(|| Other("Upload-Offset header not found".into()))?
|
.ok_or_else(|| Other("Upload-Offset header not found".into()))?
|
||||||
.to_str()
|
.to_str()
|
||||||
.map_err(|_| Other("Upload-Offset header invalid".into()))?
|
.map_err(|e| Other(e.into()))?
|
||||||
.parse::<u64>()
|
.parse::<u64>()
|
||||||
.map_err(|_| Other("Upload-Offset header not an integer".into()))?;
|
.map_err(|e| Other(e.into()))?;
|
||||||
|
|
||||||
if chunk.after() != offset {
|
if chunk.after() != offset {
|
||||||
return Err(Other("unexpected offset response".into()));
|
return Err(Other("unexpected offset response".into()));
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,7 @@ impl<'t> Share<'t> {
|
||||||
alias: &'t Alias,
|
alias: &'t Alias,
|
||||||
data: NewShareRequest,
|
data: NewShareRequest,
|
||||||
) -> Result<Self, ureq::Error> {
|
) -> Result<Self, ureq::Error> {
|
||||||
let res = http
|
let res = (http.post(alias.get_endpoint("alias/upload/new")))
|
||||||
.post(alias.get_endpoint("alias/upload/new"))
|
|
||||||
.sharry_header(alias)
|
.sharry_header(alias)
|
||||||
.send_json(data)?
|
.send_json(data)?
|
||||||
.body_mut()
|
.body_mut()
|
||||||
|
|
@ -34,12 +33,9 @@ impl<'t> Share<'t> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn notify(&self, http: &ureq::Agent) -> Result<(), ureq::Error> {
|
pub fn notify(&self, http: &ureq::Agent) -> Result<(), ureq::Error> {
|
||||||
let endpoint = self
|
let endpoint = (self.alias).get_endpoint(format!("alias/mail/notify/{}", self.id));
|
||||||
.alias
|
|
||||||
.get_endpoint(format!("alias/mail/notify/{}", self.id));
|
|
||||||
|
|
||||||
let res = http
|
let res = (http.post(endpoint))
|
||||||
.post(endpoint)
|
|
||||||
.sharry_header(self.alias)
|
.sharry_header(self.alias)
|
||||||
.send_empty()?
|
.send_empty()?
|
||||||
.body_mut()
|
.body_mut()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue