[MIRROR ONLY] A correct and efficient ATProto blob proxy for secure content delivery. codeberg.org/Blooym/porxie
36
fork

Configure Feed

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

chore: net.dollware -> dev.blooym

Lyna f32e1de2 7d2202ab

+56 -56
+3 -3
README.md
··· 69 69 ## Routes 70 70 71 71 - [GET] `/{did}/{cid}`: Fetch a blob either from cache or origin. 72 - - [GET] `/xrpc/net.dollware.porxie.getBlob?did=<did>&cid=<cid>`: XRPC Compatibility alias for the fetch blob endpoint. 73 - - [POST] `/xrpc/net.dollware.porxie.clearActorCache?did=<did>`: Clear all cached items relating to an actor DID. 74 - - [POST] `/xrpc/net.dollware.porxie.clearBlobCache?cid=<cid>`: Clear all cache items relating to a blob CID. 72 + - [GET] `/xrpc/dev.blooym.porxie.getBlob?did=<did>&cid=<cid>`: XRPC Compatibility alias for the fetch blob endpoint. 73 + - [POST] `/xrpc/dev.blooym.porxie.clearActorCache?did=<did>`: Clear all cached items relating to an actor DID. 74 + - [POST] `/xrpc/dev.blooym.porxie.clearBlobCache?cid=<cid>`: Clear all cache items relating to a blob CID. 75 75 76 76 77 77 ## Policy Service
+2 -2
crates/lexgen/Cargo.toml
··· 4 4 edition = "2024" 5 5 6 6 [features] 7 - default = ["net_dollware"] 8 - net_dollware = [] 7 + default = ["dev_blooym"] 8 + dev_blooym = [] 9 9 10 10 [dependencies] 11 11 jacquard-common = { version = "0.11.0", default-features = false }
+1 -1
crates/lexgen/lexicons/net/dollware/porxie/clearActorCache.json crates/lexgen/lexicons/dev/blooym/porxie/clearActorCache.json
··· 1 1 { 2 2 "lexicon": 1, 3 - "id": "net.dollware.porxie.clearActorCache", 3 + "id": "dev.blooym.porxie.clearActorCache", 4 4 "defs": { 5 5 "main": { 6 6 "type": "procedure",
+1 -1
crates/lexgen/lexicons/net/dollware/porxie/clearBlobCache.json crates/lexgen/lexicons/dev/blooym/porxie/clearBlobCache.json
··· 1 1 { 2 2 "lexicon": 1, 3 - "id": "net.dollware.porxie.clearBlobCache", 3 + "id": "dev.blooym.porxie.clearBlobCache", 4 4 "defs": { 5 5 "main": { 6 6 "type": "procedure",
+1 -1
crates/lexgen/lexicons/net/dollware/porxie/getBlob.json crates/lexgen/lexicons/dev/blooym/porxie/getBlob.json
··· 1 1 { 2 2 "lexicon": 1, 3 - "id": "net.dollware.porxie.getBlob", 3 + "id": "dev.blooym.porxie.getBlob", 4 4 "defs": { 5 5 "main": { 6 6 "type": "query",
+1 -1
crates/lexgen/lexicons/net/dollware/porxie/getBlobPolicy.json crates/lexgen/lexicons/dev/blooym/porxie/getBlobPolicy.json
··· 1 1 { 2 2 "lexicon": 1, 3 - "id": "net.dollware.porxie.getBlobPolicy", 3 + "id": "dev.blooym.porxie.getBlobPolicy", 4 4 "defs": { 5 5 "main": { 6 6 "type": "query",
+2 -2
crates/lexgen/src/lib.rs
··· 7 7 pub mod builder_types; 8 8 9 9 10 - #[cfg(feature = "net_dollware")] 11 - pub mod net_dollware; 10 + #[cfg(feature = "dev_blooym")] 11 + pub mod dev_blooym;
crates/lexgen/src/net_dollware.rs crates/lexgen/src/dev_blooym.rs
crates/lexgen/src/net_dollware/porxie.rs crates/lexgen/src/dev_blooym/porxie.rs
+6 -6
crates/lexgen/src/net_dollware/porxie/clear_actor_cache.rs crates/lexgen/src/dev_blooym/porxie/clear_actor_cache.rs
··· 1 1 // @generated by jacquard-lexicon. DO NOT EDIT. 2 2 // 3 - // Lexicon: net.dollware.porxie.clearActorCache 3 + // Lexicon: dev.blooym.porxie.clearActorCache 4 4 // 5 5 // This file was automatically generated from Lexicon schemas. 6 6 // Any manual changes will be overwritten on the next regeneration. ··· 28 28 #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)] 29 29 #[serde(rename_all = "camelCase")] 30 30 pub struct ClearActorCacheOutput<'a> {} 31 - /// Response type for net.dollware.porxie.clearActorCache 31 + /// Response type for dev.blooym.porxie.clearActorCache 32 32 pub struct ClearActorCacheResponse; 33 33 impl jacquard_common::xrpc::XrpcResp for ClearActorCacheResponse { 34 - const NSID: &'static str = "net.dollware.porxie.clearActorCache"; 34 + const NSID: &'static str = "dev.blooym.porxie.clearActorCache"; 35 35 const ENCODING: &'static str = "application/json"; 36 36 type Output<'de> = ClearActorCacheOutput<'de>; 37 37 type Err<'de> = jacquard_common::xrpc::GenericError<'de>; 38 38 } 39 39 40 40 impl<'a> jacquard_common::xrpc::XrpcRequest for ClearActorCache<'a> { 41 - const NSID: &'static str = "net.dollware.porxie.clearActorCache"; 41 + const NSID: &'static str = "dev.blooym.porxie.clearActorCache"; 42 42 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 43 43 "application/json", 44 44 ); 45 45 type Response = ClearActorCacheResponse; 46 46 } 47 47 48 - /// Endpoint type for net.dollware.porxie.clearActorCache 48 + /// Endpoint type for dev.blooym.porxie.clearActorCache 49 49 pub struct ClearActorCacheRequest; 50 50 impl jacquard_common::xrpc::XrpcEndpoint for ClearActorCacheRequest { 51 - const PATH: &'static str = "/xrpc/net.dollware.porxie.clearActorCache"; 51 + const PATH: &'static str = "/xrpc/dev.blooym.porxie.clearActorCache"; 52 52 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 53 53 "application/json", 54 54 );
+6 -6
crates/lexgen/src/net_dollware/porxie/clear_blob_cache.rs crates/lexgen/src/dev_blooym/porxie/clear_blob_cache.rs
··· 1 1 // @generated by jacquard-lexicon. DO NOT EDIT. 2 2 // 3 - // Lexicon: net.dollware.porxie.clearBlobCache 3 + // Lexicon: dev.blooym.porxie.clearBlobCache 4 4 // 5 5 // This file was automatically generated from Lexicon schemas. 6 6 // Any manual changes will be overwritten on the next regeneration. ··· 28 28 #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)] 29 29 #[serde(rename_all = "camelCase")] 30 30 pub struct ClearBlobCacheOutput<'a> {} 31 - /// Response type for net.dollware.porxie.clearBlobCache 31 + /// Response type for dev.blooym.porxie.clearBlobCache 32 32 pub struct ClearBlobCacheResponse; 33 33 impl jacquard_common::xrpc::XrpcResp for ClearBlobCacheResponse { 34 - const NSID: &'static str = "net.dollware.porxie.clearBlobCache"; 34 + const NSID: &'static str = "dev.blooym.porxie.clearBlobCache"; 35 35 const ENCODING: &'static str = "application/json"; 36 36 type Output<'de> = ClearBlobCacheOutput<'de>; 37 37 type Err<'de> = jacquard_common::xrpc::GenericError<'de>; 38 38 } 39 39 40 40 impl<'a> jacquard_common::xrpc::XrpcRequest for ClearBlobCache<'a> { 41 - const NSID: &'static str = "net.dollware.porxie.clearBlobCache"; 41 + const NSID: &'static str = "dev.blooym.porxie.clearBlobCache"; 42 42 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 43 43 "application/json", 44 44 ); 45 45 type Response = ClearBlobCacheResponse; 46 46 } 47 47 48 - /// Endpoint type for net.dollware.porxie.clearBlobCache 48 + /// Endpoint type for dev.blooym.porxie.clearBlobCache 49 49 pub struct ClearBlobCacheRequest; 50 50 impl jacquard_common::xrpc::XrpcEndpoint for ClearBlobCacheRequest { 51 - const PATH: &'static str = "/xrpc/net.dollware.porxie.clearBlobCache"; 51 + const PATH: &'static str = "/xrpc/dev.blooym.porxie.clearBlobCache"; 52 52 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 53 53 "application/json", 54 54 );
+6 -6
crates/lexgen/src/net_dollware/porxie/get_blob.rs crates/lexgen/src/dev_blooym/porxie/get_blob.rs
··· 1 1 // @generated by jacquard-lexicon. DO NOT EDIT. 2 2 // 3 - // Lexicon: net.dollware.porxie.getBlob 3 + // Lexicon: dev.blooym.porxie.getBlob 4 4 // 5 5 // This file was automatically generated from Lexicon schemas. 6 6 // Any manual changes will be overwritten on the next regeneration. ··· 28 28 pub body: Bytes, 29 29 } 30 30 31 - /// Response type for net.dollware.porxie.getBlob 31 + /// Response type for dev.blooym.porxie.getBlob 32 32 pub struct GetBlobResponse; 33 33 impl jacquard_common::xrpc::XrpcResp for GetBlobResponse { 34 - const NSID: &'static str = "net.dollware.porxie.getBlob"; 34 + const NSID: &'static str = "dev.blooym.porxie.getBlob"; 35 35 const ENCODING: &'static str = "*/*"; 36 36 type Output<'de> = GetBlobOutput; 37 37 type Err<'de> = jacquard_common::xrpc::GenericError<'de>; ··· 53 53 } 54 54 55 55 impl<'a> jacquard_common::xrpc::XrpcRequest for GetBlob<'a> { 56 - const NSID: &'static str = "net.dollware.porxie.getBlob"; 56 + const NSID: &'static str = "dev.blooym.porxie.getBlob"; 57 57 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 58 58 type Response = GetBlobResponse; 59 59 } 60 60 61 - /// Endpoint type for net.dollware.porxie.getBlob 61 + /// Endpoint type for dev.blooym.porxie.getBlob 62 62 pub struct GetBlobRequest; 63 63 impl jacquard_common::xrpc::XrpcEndpoint for GetBlobRequest { 64 - const PATH: &'static str = "/xrpc/net.dollware.porxie.getBlob"; 64 + const PATH: &'static str = "/xrpc/dev.blooym.porxie.getBlob"; 65 65 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 66 66 type Request<'de> = GetBlob<'de>; 67 67 type Response = GetBlobResponse;
+18 -18
crates/lexgen/src/net_dollware/porxie/get_blob_policy.rs crates/lexgen/src/dev_blooym/porxie/get_blob_policy.rs
··· 1 1 // @generated by jacquard-lexicon. DO NOT EDIT. 2 2 // 3 - // Lexicon: net.dollware.porxie.getBlobPolicy 3 + // Lexicon: dev.blooym.porxie.getBlobPolicy 4 4 // 5 5 // This file was automatically generated from Lexicon schemas. 6 6 // Any manual changes will be overwritten on the next regeneration. ··· 22 22 #[allow(unused_imports)] 23 23 use jacquard_lexicon::validation::{ConstraintError, ValidationPath}; 24 24 use serde::{Serialize, Deserialize}; 25 - use crate::net_dollware::porxie::get_blob_policy; 25 + use crate::dev_blooym::porxie::get_blob_policy; 26 26 /// Blob is allowed to be served. 27 27 28 28 #[lexicon] ··· 53 53 #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)] 54 54 #[serde(tag = "$type", bound(deserialize = "'de: 'a"))] 55 55 pub enum GetBlobPolicyOutputPolicy<'a> { 56 - #[serde(rename = "net.dollware.porxie.getBlobPolicy#allowed")] 56 + #[serde(rename = "dev.blooym.porxie.getBlobPolicy#allowed")] 57 57 Allowed(Box<get_blob_policy::Allowed<'a>>), 58 - #[serde(rename = "net.dollware.porxie.getBlobPolicy#restricted")] 58 + #[serde(rename = "dev.blooym.porxie.getBlobPolicy#restricted")] 59 59 Restricted(Box<get_blob_policy::Restricted<'a>>), 60 - #[serde(rename = "net.dollware.porxie.getBlobPolicy#unlisted")] 60 + #[serde(rename = "dev.blooym.porxie.getBlobPolicy#unlisted")] 61 61 Unlisted(Box<get_blob_policy::Unlisted<'a>>), 62 62 } 63 63 ··· 87 87 88 88 impl<'a> LexiconSchema for Allowed<'a> { 89 89 fn nsid() -> &'static str { 90 - "net.dollware.porxie.getBlobPolicy" 90 + "dev.blooym.porxie.getBlobPolicy" 91 91 } 92 92 fn def_name() -> &'static str { 93 93 "allowed" 94 94 } 95 95 fn lexicon_doc() -> LexiconDoc<'static> { 96 - lexicon_doc_net_dollware_porxie_get_blob_policy() 96 + lexicon_doc_dev_blooym_porxie_getBlobPolicy() 97 97 } 98 98 fn validate(&self) -> Result<(), ConstraintError> { 99 99 Ok(()) 100 100 } 101 101 } 102 102 103 - /// Response type for net.dollware.porxie.getBlobPolicy 103 + /// Response type for dev.blooym.porxie.getBlobPolicy 104 104 pub struct GetBlobPolicyResponse; 105 105 impl jacquard_common::xrpc::XrpcResp for GetBlobPolicyResponse { 106 - const NSID: &'static str = "net.dollware.porxie.getBlobPolicy"; 106 + const NSID: &'static str = "dev.blooym.porxie.getBlobPolicy"; 107 107 const ENCODING: &'static str = "application/json"; 108 108 type Output<'de> = GetBlobPolicyOutput<'de>; 109 109 type Err<'de> = jacquard_common::xrpc::GenericError<'de>; 110 110 } 111 111 112 112 impl<'a> jacquard_common::xrpc::XrpcRequest for GetBlobPolicy<'a> { 113 - const NSID: &'static str = "net.dollware.porxie.getBlobPolicy"; 113 + const NSID: &'static str = "dev.blooym.porxie.getBlobPolicy"; 114 114 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 115 115 type Response = GetBlobPolicyResponse; 116 116 } 117 117 118 - /// Endpoint type for net.dollware.porxie.getBlobPolicy 118 + /// Endpoint type for dev.blooym.porxie.getBlobPolicy 119 119 pub struct GetBlobPolicyRequest; 120 120 impl jacquard_common::xrpc::XrpcEndpoint for GetBlobPolicyRequest { 121 - const PATH: &'static str = "/xrpc/net.dollware.porxie.getBlobPolicy"; 121 + const PATH: &'static str = "/xrpc/dev.blooym.porxie.getBlobPolicy"; 122 122 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 123 123 type Request<'de> = GetBlobPolicy<'de>; 124 124 type Response = GetBlobPolicyResponse; ··· 126 126 127 127 impl<'a> LexiconSchema for Restricted<'a> { 128 128 fn nsid() -> &'static str { 129 - "net.dollware.porxie.getBlobPolicy" 129 + "dev.blooym.porxie.getBlobPolicy" 130 130 } 131 131 fn def_name() -> &'static str { 132 132 "restricted" 133 133 } 134 134 fn lexicon_doc() -> LexiconDoc<'static> { 135 - lexicon_doc_net_dollware_porxie_get_blob_policy() 135 + lexicon_doc_dev_blooym_porxie_getBlobPolicy() 136 136 } 137 137 fn validate(&self) -> Result<(), ConstraintError> { 138 138 Ok(()) ··· 141 141 142 142 impl<'a> LexiconSchema for Unlisted<'a> { 143 143 fn nsid() -> &'static str { 144 - "net.dollware.porxie.getBlobPolicy" 144 + "dev.blooym.porxie.getBlobPolicy" 145 145 } 146 146 fn def_name() -> &'static str { 147 147 "unlisted" 148 148 } 149 149 fn lexicon_doc() -> LexiconDoc<'static> { 150 - lexicon_doc_net_dollware_porxie_get_blob_policy() 150 + lexicon_doc_dev_blooym_porxie_getBlobPolicy() 151 151 } 152 152 fn validate(&self) -> Result<(), ConstraintError> { 153 153 Ok(()) 154 154 } 155 155 } 156 156 157 - fn lexicon_doc_net_dollware_porxie_get_blob_policy() -> LexiconDoc<'static> { 157 + fn lexicon_doc_dev_blooym_porxie_getBlobPolicy() -> LexiconDoc<'static> { 158 158 #[allow(unused_imports)] 159 159 use jacquard_common::{CowStr, deps::smol_str::SmolStr, types::blob::MimeType}; 160 160 use jacquard_lexicon::lexicon::*; 161 161 use alloc::collections::BTreeMap; 162 162 LexiconDoc { 163 163 lexicon: Lexicon::Lexicon1, 164 - id: CowStr::new_static("net.dollware.porxie.getBlobPolicy"), 164 + id: CowStr::new_static("dev.blooym.porxie.getBlobPolicy"), 165 165 defs: { 166 166 let mut map = BTreeMap::new(); 167 167 map.insert(
+5 -5
crates/porxie/src/main.rs
··· 18 18 routes::{ 19 19 get_blob_handler, get_index_handler, 20 20 xrpc::{ 21 - get_health_handler, 22 - net_dollware::porxie::{ 21 + dev_blooym::porxie::{ 23 22 clear_actor_cache_handler, clear_blob_cache_handler, get_blob_handler_xrpc_compat, 24 23 }, 24 + get_health_handler, 25 25 }, 26 26 }, 27 27 }; ··· 495 495 Router::new() 496 496 .route("/_health", get(get_health_handler)) 497 497 .route( 498 - "/net.dollware.porxie.getBlob", 498 + "/dev.blooym.porxie.getBlob", 499 499 get(get_blob_handler_xrpc_compat).layer(TimeoutLayer::with_status_code( 500 500 StatusCode::REQUEST_TIMEOUT, 501 501 args.blob.processing_timeout.into(), 502 502 )), 503 503 ) 504 504 .route( 505 - "/net.dollware.porxie.clearActorCache", 505 + "/dev.blooym.porxie.clearActorCache", 506 506 post(clear_actor_cache_handler), 507 507 ) 508 508 .route( 509 - "/net.dollware.porxie.clearBlobCache", 509 + "/dev.blooym.porxie.clearBlobCache", 510 510 post(clear_blob_cache_handler), 511 511 ), 512 512 )
+1 -1
crates/porxie/src/routes/xrpc/mod.rs
··· 1 + pub mod dev_blooym; 1 2 mod health; 2 - pub mod net_dollware; 3 3 4 4 pub use health::get_health_handler;
crates/porxie/src/routes/xrpc/net_dollware/mod.rs crates/porxie/src/routes/xrpc/dev_blooym/mod.rs
+1 -1
crates/porxie/src/routes/xrpc/net_dollware/porxie/clear_actor_cache.rs crates/porxie/src/routes/xrpc/dev_blooym/porxie/clear_actor_cache.rs
··· 1 1 use crate::{AppState, extractors::AdminXrpcAuth, routes::ErrorResponse}; 2 2 use axum::{Json, extract::State, http::HeaderName}; 3 3 use jacquard_axum::ExtractXrpc; 4 - use lexgen::net_dollware::porxie::clear_actor_cache::ClearActorCacheRequest; 4 + use lexgen::dev_blooym::porxie::clear_actor_cache::ClearActorCacheRequest; 5 5 use reqwest::StatusCode; 6 6 use std::sync::Arc; 7 7
+1 -1
crates/porxie/src/routes/xrpc/net_dollware/porxie/clear_blob_cache.rs crates/porxie/src/routes/xrpc/dev_blooym/porxie/clear_blob_cache.rs
··· 10 10 http::{HeaderName, header}, 11 11 }; 12 12 use jacquard_axum::ExtractXrpc; 13 - use lexgen::net_dollware::porxie::clear_blob_cache::ClearBlobCacheRequest; 13 + use lexgen::dev_blooym::porxie::clear_blob_cache::ClearBlobCacheRequest; 14 14 use reqwest::StatusCode; 15 15 use std::sync::Arc; 16 16
+1 -1
crates/porxie/src/routes/xrpc/net_dollware/porxie/get_blob.rs crates/porxie/src/routes/xrpc/dev_blooym/porxie/get_blob.rs
··· 4 4 response::IntoResponse, 5 5 }; 6 6 use jacquard_axum::ExtractXrpc; 7 - use lexgen::net_dollware::porxie::get_blob::GetBlobRequest; 7 + use lexgen::dev_blooym::porxie::get_blob::GetBlobRequest; 8 8 use std::sync::Arc; 9 9 10 10 /// Compatibility layer that converts the xrpc call into a
crates/porxie/src/routes/xrpc/net_dollware/porxie/mod.rs crates/porxie/src/routes/xrpc/dev_blooym/porxie/mod.rs