graphuser.nim 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import options, strutils
  2. from ../../types import User, VerifiedType
  3. import user as userType # Entities, for modern profile_bio parsing
  4. type
  5. GraphUser* = object
  6. data*: tuple[userResult: Option[UserData], user: Option[UserData]]
  7. UserData* = object
  8. result*: UserResult
  9. UserCore* = object
  10. name*: string
  11. screenName*: string
  12. createdAt*: string
  13. UserBio* = object
  14. description*: string
  15. entities*: Entities
  16. UserAvatar* = object
  17. imageUrl*: string
  18. Verification* = object
  19. verifiedType*: VerifiedType
  20. Location* = object
  21. location*: string
  22. Privacy* = object
  23. protected*: bool
  24. # Modern UserByRestId/UserByScreenName shape moves the counts out of `legacy`
  25. # into these typed sub-objects.
  26. RelationshipCounts* = object
  27. followers*: int
  28. following*: int
  29. TweetCounts* = object
  30. tweets*: int
  31. mediaTweets*: int
  32. ActionCounts* = object
  33. favoritesCount*: int
  34. UserResult* = object
  35. legacy*: User
  36. restId*: string
  37. isBlueVerified*: bool
  38. core*: UserCore
  39. avatar*: UserAvatar
  40. banner*: UserAvatar
  41. unavailableReason*: Option[string]
  42. reason*: Option[string]
  43. privacy*: Option[Privacy]
  44. profileBio*: Option[UserBio]
  45. verification*: Option[Verification]
  46. location*: Option[Location]
  47. relationshipCounts*: Option[RelationshipCounts]
  48. tweetCounts*: Option[TweetCounts]
  49. actionCounts*: Option[ActionCounts]
  50. proc enumHook*(s: string; v: var VerifiedType) =
  51. v = try:
  52. parseEnum[VerifiedType](s)
  53. except:
  54. VerifiedType.none