~zethra/tiktok-url-cleaner

9195bd22d83c4a70b39f07ff28b61501a7a23651 — Sashanoraa 1 year, 27 days ago 4cecab0
Set Content-Type on all responses

Signed-off-by: Sashanoraa <sasha@noraa.gay>
1 files changed, 22 insertions(+), 10 deletions(-)

M src/main.rs
M src/main.rs => src/main.rs +22 -10
@@ 65,6 65,22 @@ fn parse_resp(headers: &HeaderMap) -> Result<Uri> {
    remove_query_params(uri)
}

fn ok(body: String) -> HttpResponse {
    HttpResponse::Ok().content_type("text/html").body(body)
}

fn bad_req(body: String) -> HttpResponse {
    HttpResponse::BadRequest()
        .content_type("text/html")
        .body(body)
}

fn int_err(body: String) -> HttpResponse {
    HttpResponse::InternalServerError()
        .content_type("text/html")
        .body(body)
}

#[get("/clean")]
async fn clean(query: web::Query<Query>) -> impl Responder {
    let client = Client::builder().disable_redirects().finish();


@@ 72,11 88,11 @@ async fn clean(query: web::Query<Query>) -> impl Responder {
        Some(url) => match url.parse::<Uri>() {
            Ok(url) => url,
            Err(_) => {
                return HttpResponse::BadRequest().body(err("Requested URL isn't a valid URL"))
                return bad_req(err("Requested URL isn't a valid URL"))
            }
        },
        None => {
            return HttpResponse::BadRequest().body(err("Request didn't have text or url param"))
            return bad_req(err("Request didn't have text or url param"))
        }
    };



@@ 91,16 107,15 @@ async fn clean(query: web::Query<Query>) -> impl Responder {
            Ok(resp) if resp.status().as_u16() / 10 == 30 => match parse_resp(&resp.headers()) {
                Ok(new_url) => url = new_url,
                Err(_) => {
                    break HttpResponse::InternalServerError().body(err("Tiktok returned bad link"))
                    break int_err(err("Tiktok returned bad link"))
                }
            },
            Ok(_) => match remove_query_params(url) {
                Ok(new_url) => break HttpResponse::Ok().body(out(new_url)),
                Err(_) => break HttpResponse::InternalServerError().body(err("Error parsing URL")),
                Ok(new_url) => break ok(out(new_url)),
                Err(_) => break int_err(err("Error parsing URL")),
            },
            Err(_) => {
                break HttpResponse::InternalServerError()
                    .body(err("Error making request to Tiktok"))
                break int_err(err("Error making request to Tiktok"))
            }
        }
    }


@@ 143,9 158,6 @@ async fn files(req: HttpRequest) -> impl Responder {

#[actix_web::main]
async fn main() -> io::Result<()> {
    if env::var("RUST_LOG").is_err() {
        env::set_var("RUST_LOG", "actix_web=info");
    }
    env_logger::init();
    let ip = env::var("IP").unwrap_or("127.0.0.1".to_owned());
    let port = env::var("PORT").unwrap_or("8080".to_owned());