save
This commit is contained in:
parent
439e9546e7
commit
f007c47dbb
10
src/main.rs
10
src/main.rs
|
@ -32,6 +32,7 @@ use actix_web::web::{Buf, Bytes};
|
|||
use actix_web::http::header::IntoHeaderValue;
|
||||
use actix_web::client::PayloadError;
|
||||
use crate::reader::ToStream;
|
||||
use crate::writer::Writer;
|
||||
|
||||
#[derive(Template)]
|
||||
#[template(path = "hello.html")]
|
||||
|
@ -174,13 +175,8 @@ async fn git_proto(payload : web::Payload, web::Path((owner, reponame)): web::Pa
|
|||
let mut p: Child = cmd.spawn()?;
|
||||
//p.stdin.take().unwrap().write()
|
||||
let mut input = p.stdin.take().unwrap();
|
||||
payload.try_for_each(|bytes| {
|
||||
// println!("{:?}", bytes);
|
||||
let write_all = input.write_all(bytes.bytes());
|
||||
let res = write_all.map_err(|e| actix_web::client::PayloadError::Io(e));
|
||||
return res;
|
||||
// future::ready(Ok(()))
|
||||
}).await;
|
||||
let mut writer = Writer(input);
|
||||
payload.try_for_each(|bytes| writer.write(bytes)).await; // le faire au niveau de payload et pas de input
|
||||
println!("input sent");
|
||||
let mut rdr = tokio::io::BufReader::new(p.stdout.take().unwrap());
|
||||
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
use actix_web::web::Bytes;
|
||||
use actix_web::web::{Bytes, Buf};
|
||||
use tokio::io::AsyncWriteExt;
|
||||
use actix_web::error::PayloadError;
|
||||
|
||||
pub struct Writer<T>{
|
||||
pub t : T,
|
||||
pub bytes : Bytes,
|
||||
}
|
||||
pub struct Writer<T>(pub T);
|
||||
|
||||
impl
|
||||
impl <T : tokio::io::AsyncWrite + Unpin> Writer<T> {
|
||||
pub async fn write(&mut self, bytes : Bytes) -> Result<(), PayloadError> {
|
||||
let write_all = self.0.write_all(bytes.bytes()).await;
|
||||
let res = write_all.map_err(|e| actix_web::client::PayloadError::Io(e));
|
||||
return res;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue