This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / knot2 / crates / knot-lfs / src / lib.rs
2.4 kB 77 lines
1mod admission; 2mod batch; 3mod error; 4mod gc; 5mod pointer; 6mod scan; 7mod store; 8mod transfer; 9mod types; 10 11pub use admission::{StoreAdmission, UploadAdmission, UploadPermit}; 12pub use batch::{ 13 BASIC_TRANSFER, BATCH_MEDIA_TYPE, BatchAction, BatchActions, BatchObject, BatchObjectError, 14 BatchOperation, BatchRef, BatchRequest, BatchResponse, BatchResponseObject, HASH_ALGO, 15 HashAlgo, MAX_BATCH_OBJECTS, TransferAdapter, 16}; 17pub use error::LfsError; 18pub use gc::{GcError, GcReport, collect_repo}; 19pub use pointer::{LfsPointer, POINTER_MAX_BYTES, parse_pointer}; 20pub use scan::scan_pointers; 21pub use store::{ 22 DiskStore, LfsHandle, LfsStore, MemoryStore, OrphanSweep, Reclaimed, StoredObject, 23}; 24pub use transfer::{TransferOp, serve_transfer}; 25pub use types::{ClaimedSize, FreeSpaceFloor, LfsOid, LfsSize, LfsStorePath, ObjectRelPath}; 26 27#[doc(hidden)] 28pub mod fuzz { 29 use knot_types::RepoDid; 30 31 use crate::{ 32 BatchRequest, FreeSpaceFloor, LfsSize, LfsStore, LfsStorePath, MAX_BATCH_OBJECTS, 33 MemoryStore, StoreAdmission, TransferOp, parse_pointer, serve_transfer, 34 }; 35 36 pub fn transfer(data: &[u8]) { 37 let admission = StoreAdmission::new( 38 LfsStorePath::new("/"), 39 LfsSize::new(u64::MAX), 40 FreeSpaceFloor::new(0), 41 ); 42 let repo = RepoDid::new("did:plc:squid").expect("static DID is valid"); 43 let messages = &knot_messages::default_catalog().lfs; 44 [TransferOp::Upload, TransferOp::Download] 45 .iter() 46 .for_each(|op| { 47 let store = MemoryStore::new(); 48 let _ = serve_transfer( 49 &store, 50 &admission, 51 &repo, 52 *op, 53 messages, 54 data, 55 std::io::sink(), 56 ); 57 }); 58 } 59 60 pub fn batch(data: &[u8]) { 61 let Ok(request) = serde_json::from_slice::<BatchRequest>(data) else { 62 return; 63 }; 64 if request.objects.len() > MAX_BATCH_OBJECTS { 65 return; 66 } 67 let repo = RepoDid::new("did:plc:squid").expect("static DID is valid"); 68 let store = MemoryStore::new(); 69 request.objects.iter().for_each(|object| { 70 let _ = store.probe(&repo, &object.oid); 71 }); 72 } 73 74 pub fn pointer(data: &[u8]) { 75 let _ = parse_pointer(data); 76 } 77}