[WIP] A (somewhat barebones) atproto app for creating custom sites without hosting!

upload: add framework for types and auth mods

Changed files
+50
upload
+4
upload/src/auth.rs
··· 1 + pub struct Session { 2 + pds: String, 3 + id: crate::config::Id, 4 + }
+2
upload/src/main.rs
··· 1 + mod auth; 1 2 mod config; 3 + mod types; 2 4 3 5 fn main() -> Result<(), ()> { 4 6 let config = config::extract();
+44
upload/src/types.rs
··· 1 + pub enum Did { 2 + Web(String), 3 + Plc(String), 4 + } 5 + 6 + enum DidError { 7 + UnknownMethod, 8 + MalformedDid, 9 + } 10 + 11 + impl Did { 12 + fn from(did: String) -> Result<Did, DidError> { 13 + if did.starts_with("did:plc:") { 14 + return Ok(Did::Plc(String::from(did[8..]))); 15 + } else if did.starts_with("did:web:") { 16 + return Ok(Did::Plc(String::from(did[8..]))); 17 + } else if did.starts_with("did:") { 18 + return Err(DidError::UnknownMethod); 19 + } else { 20 + return Err(DidError::MalformedDid); 21 + } 22 + } 23 + } 24 + 25 + pub struct User { 26 + handle: Option<String>, 27 + did: Did, 28 + pds: String, 29 + } 30 + 31 + enum UserFromErr { 32 + InvalidHandle, 33 + NoDidForHandle, 34 + HandleNotBidirectional, 35 + DidParseError(DidError), 36 + DidNotBidirectional, 37 + NoPds, 38 + } 39 + 40 + impl User { 41 + fn fromHandle(handle: String) -> Result<User, UserFromErr> {} 42 + 43 + fn fromDid(did: String) -> Result<User, UserFromErr> {} 44 + }