feat(tvix/nar-bridge): send content-type headers

This prevents browsers from treating NARInfo and nix-cache-info paths as
a separate "Download", but just show it in plaintext.

Change-Id: If99abe20ef1d24e4fa86c055160861ca47aa81ce
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12267
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: Connor Brewster <cbrewster@hey.com>
This commit is contained in:
Florian Klink 2024-08-23 10:34:53 +03:00 committed by clbot
parent 35d5811eec
commit a4ebc8da7c
3 changed files with 18 additions and 9 deletions

View file

@ -1,7 +1,9 @@
use axum::http::StatusCode;
use axum::response::IntoResponse;
use axum::routing::{head, put};
use axum::{routing::get, Router};
use lru::LruCache;
use nix_compat::nix_http;
use parking_lot::RwLock;
use std::num::NonZeroUsize;
use std::sync::Arc;
@ -71,9 +73,12 @@ async fn four_o_four() -> Result<(), StatusCode> {
Err(StatusCode::NOT_FOUND)
}
async fn nix_cache_info(priority: u64) -> String {
format!(
"StoreDir: /nix/store\nWantMassQuery: 1\nPriority: {}\n",
priority
async fn nix_cache_info(priority: u64) -> impl IntoResponse {
(
[("Content-Type", nix_http::MIME_TYPE_CACHE_INFO)],
format!(
"StoreDir: /nix/store\nWantMassQuery: 1\nPriority: {}\n",
priority
),
)
}