mirror of
https://forge.pointfixe.fr/hubert/gitust.git
synced 2026-02-04 16:37:30 +01:00
save
This commit is contained in:
25
src/main.rs
25
src/main.rs
@@ -1,6 +1,7 @@
|
||||
mod git;
|
||||
mod ite;
|
||||
mod tostream;
|
||||
mod reader;
|
||||
mod writer;
|
||||
|
||||
use actix_files::Files;
|
||||
use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder, Error, HttpRequest, HttpMessage};
|
||||
@@ -19,8 +20,8 @@ use crate::ite::SuperIterator;
|
||||
use std::ops::Add;
|
||||
use std::path::{PathBuf, Path};
|
||||
use serde::Deserialize;
|
||||
use tokio::process::{Command, Child};
|
||||
use tokio::io::{AsyncWriteExt, AsyncBufReadExt, AsyncReadExt};
|
||||
use tokio::process::{Command, Child, ChildStdout};
|
||||
use tokio::io::{AsyncWriteExt, AsyncBufReadExt, AsyncReadExt, BufReader};
|
||||
use std::process::Stdio;
|
||||
use actix_web::http::{header, StatusCode};
|
||||
use std::io;
|
||||
@@ -30,6 +31,7 @@ use futures::{Stream, StreamExt, TryStreamExt, future, stream, TryFutureExt, pin
|
||||
use actix_web::web::{Buf, Bytes};
|
||||
use actix_web::http::header::IntoHeaderValue;
|
||||
use actix_web::client::PayloadError;
|
||||
use crate::reader::ToStream;
|
||||
|
||||
#[derive(Template)]
|
||||
#[template(path = "hello.html")]
|
||||
@@ -183,7 +185,7 @@ async fn git_proto(payload : web::Payload, web::Path((owner, reponame)): web::Pa
|
||||
let mut rdr = tokio::io::BufReader::new(p.stdout.take().unwrap());
|
||||
|
||||
let mut headers = HashMap::new();
|
||||
while true {
|
||||
loop {
|
||||
let mut line = String::new();
|
||||
let len = rdr.read_line(&mut line).await?;
|
||||
if line == "" || line == "\r" {
|
||||
@@ -223,14 +225,15 @@ async fn git_proto(payload : web::Payload, web::Path((owner, reponame)): web::Pa
|
||||
|
||||
println!("Write body...");
|
||||
|
||||
let unfold = stream::try_unfold(rdr, move |mut rdr| {
|
||||
let mut buff: [u8; 1024] = [0; 1024];
|
||||
let read = rdr.read(&mut buff[..]);
|
||||
let result = read.map_ok(|l| Some((Bytes::copy_from_slice(&buff[0..l]), rdr)));
|
||||
return result;
|
||||
});
|
||||
// let unfold = stream::try_unfold(rdr, move |mut rdr| {
|
||||
// let mut buff: [u8; 1024] = [0; 1024];
|
||||
// let read = rdr.read(&mut buff[..]);
|
||||
// let result = read.map_ok(|l| Some((Bytes::copy_from_slice(&buff[0..l]), rdr)));
|
||||
// return result;
|
||||
// });
|
||||
// pin_mut!(unfold);
|
||||
let response = builder.streaming(unfold);
|
||||
// let response = builder.streaming(unfold);
|
||||
let response = builder.streaming(ToStream(rdr));
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user