A collection of Osprey rules for ATProto
at main 95 lines 1.8 kB view raw
1ActionName=GetActionName() 2 3UserId: Entity[str] = EntityJson( 4 type='UserId', 5 path='$.did', 6 required=False, 7) 8 9Handle: Entity[str] = EntityJson( 10 type='Handle', 11 path='$.eventMetadata.handle', 12 required=False, 13) 14 15PdsHost: Entity[str] = EntityJson( 16 type='PdsHost', 17 path='$.eventMetadata.pdsHost', 18 required=False, 19) 20 21DisplayName: str = JsonData( 22 path='$.eventMetadata.profile.displayName', 23 required=False, 24 coerce_type=True, 25) 26 27Description: str = JsonData( 28 path='$.eventMetadata.profile.description', 29 required=False, 30 coerce_type=True, 31) 32 33FollowersCount: int = JsonData( 34 path='$.eventMetadata.profile.followersCount', 35 required=False, 36 coerce_type=True, 37) 38 39FollowingCount: int = JsonData( 40 path='$.eventMetadata.profile.followingCount', 41 required=False, 42 coerce_type=True, 43) 44 45PostsCount: int = JsonData( 46 path='$.eventMetadata.profile.postsCount', 47 required=False, 48 coerce_type=True, 49) 50 51Avatar: Optional[str] = JsonData( 52 path='$.eventMetadata.profile.avatar', 53 required=False, 54) 55 56Banner: Optional[str] = JsonData( 57 path='$.eventMetadata.profile.banner', 58 required=False, 59) 60 61HasAvatar = Avatar != None 62 63HasBanner = Banner != None 64 65AccountCreatedAt: Optional[str] = JsonData( 66 path='$.eventMetadata.didCreatedAt', 67 required=False, 68) 69 70AccountAgeSeconds: Optional[int] = JsonData( 71 path='$.eventMetadata.accountAge', 72 required=False, 73) 74 75AccountAgeSecondsUnwrapped: int = ResolveOptional( 76 optional_value=AccountAgeSeconds, 77 default_value=999999999, 78) 79 80OperationKind: Optional[str] = JsonData( 81 path='$.operation.action', 82 required=False, 83) 84 85IsOperation = OperationKind != None 86 87 88Second: int = 1 89Minute: int = Second * 60 90FiveMinute: int = Minute * 5 91TenMinute: int = Minute * 10 92ThirtyMinute: int = Minute * 30 93Hour: int = Minute * 60 94Day: int = Hour * 24 95Week: int = Day * 7