[WIP] A (somewhat barebones) atproto app for creating custom sites without hosting!
1pub enum Did {
2 Web(String),
3 Plc(String),
4}
5
6enum DidError {
7 UnknownMethod,
8 MalformedDid,
9}
10
11impl 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
25pub struct User {
26 handle: Option<String>,
27 did: Did,
28 pds: String,
29}
30
31enum UserFromErr {
32 InvalidHandle,
33 NoDidForHandle,
34 HandleNotBidirectional,
35 DidParseError(DidError),
36 DidNotBidirectional,
37 NoPds,
38}
39
40impl User {
41 fn fromHandle(handle: String) -> Result<User, UserFromErr> {}
42
43 fn fromDid(did: String) -> Result<User, UserFromErr> {}
44}