mastoapi users
This commit is contained in:
parent
68e90344d6
commit
4da3904b89
@ -14,8 +14,20 @@ export mastoapi
|
||||
|
||||
proc createActivityPubRouter*(cfg: Config) =
|
||||
router activityspoof:
|
||||
get "/api/v1/accounts/?":
|
||||
resp Http200, {"Content-Type": "application/json"}, """[]"""
|
||||
get "/api/v1/accounts/@id":
|
||||
let id = @"id"
|
||||
if id.len == 0:
|
||||
resp Http200, {"Content-Type": "application/json"}, """[]"""
|
||||
|
||||
let username = await getCachedUsername(id)
|
||||
if username.len > 0:
|
||||
resp Http404, {"Content-Type": "application/json"}, """{"error":"Invalid account ID"}"""
|
||||
|
||||
let user = await getCachedUser(username)
|
||||
if user.suspended or user.id.len == 0:
|
||||
resp Http404, {"Content-Type": "application/json"}, """{"error":"User not found"}"""
|
||||
|
||||
resp Http200, {"Content-Type": "application/json"}, $getMastoAPIUser(user, cfg)
|
||||
|
||||
get "/api/v1/statuses/@id":
|
||||
let id = @"id"
|
||||
@ -105,8 +117,24 @@ proc createActivityPubRouter*(cfg: Config) =
|
||||
|
||||
media.add(mediaObj)
|
||||
|
||||
var fields: seq[JsonNode] = @[]
|
||||
|
||||
if tweet.user.location.len > 0:
|
||||
var location = newJObject()
|
||||
location["name"] = %"Location"
|
||||
location["value"] = %tweet.user.location
|
||||
location["verified_at"] = newJNull()
|
||||
fields.add(location)
|
||||
|
||||
if tweet.user.website.len > 0:
|
||||
var website = newJObject()
|
||||
website["name"] = %"Website"
|
||||
website["value"] = %(&"<a href=\"{tweet.user.website}\" target=\"_blank\" rel=\"nofollow noopener noreferrer me\" translate=\"no\">{tweet.user.website}</a>")
|
||||
website["verified_at"] = newJNull()
|
||||
fields.add(website)
|
||||
|
||||
var postJson = newJObject()
|
||||
postJson["id"] = %(&"{tweet.id}")
|
||||
postJson["id"] = %tweet.id
|
||||
postJson["url"] = %tweetUrl
|
||||
postJson["uri"] = %tweetUrl
|
||||
postJson["created_at"] = %($tweet.time)
|
||||
@ -128,32 +156,7 @@ proc createActivityPubRouter*(cfg: Config) =
|
||||
"website": getUrlPrefix(cfg)
|
||||
}
|
||||
postJson["media_attachments"] = %media
|
||||
postJson["account"] = %*{
|
||||
"id": &"{tweet.user.id}",
|
||||
"display_name": tweet.user.fullname,
|
||||
"username": tweet.user.username,
|
||||
"acct": tweet.user.username,
|
||||
"url": &"{getUrlPrefix(cfg)}/{tweet.user.username}",
|
||||
"uri": &"{getUrlPrefix(cfg)}/{tweet.user.username}",
|
||||
"created_at": $tweet.user.joinDate,
|
||||
"locked": tweet.user.protected,
|
||||
"bot": false, # TODO?
|
||||
"discoverable": true,
|
||||
"indexable": false,
|
||||
"group": false,
|
||||
"avatar": getUrlPrefix(cfg) & getPicUrl(tweet.user.userPic),
|
||||
"avatar_static": getUrlPrefix(cfg) & getPicUrl(tweet.user.userPic),
|
||||
"header": getUrlPrefix(cfg) & getPicUrl(tweet.user.banner),
|
||||
"header_static": getUrlPrefix(cfg) & getPicUrl(tweet.user.banner),
|
||||
"followers_count": tweet.user.followers,
|
||||
"following_count": tweet.user.following,
|
||||
"statuses_count": tweet.user.tweets,
|
||||
"hide_collections": false,
|
||||
"noindex": false,
|
||||
"emojis": @[],
|
||||
"roles": @[],
|
||||
"fields": @[],
|
||||
}
|
||||
postJson["account"] = getMastoAPIUser(tweet.user, cfg)
|
||||
postJson["mentions"] = newJArray() # TODO: parse?
|
||||
postJson["tags"] = newJArray() # TODO: parse?
|
||||
postJson["emojis"] = newJArray()
|
||||
|
||||
@ -203,3 +203,49 @@ proc getActivityStream*(user: User, cfg: Config, prefs: Prefs): JsonNode =
|
||||
}
|
||||
|
||||
result = userJson
|
||||
|
||||
proc getMastoAPIUser*(user: User, cfg: Config): JsonNode =
|
||||
var fields: seq[JsonNode] = @[]
|
||||
|
||||
if user.location.len > 0:
|
||||
var location = newJObject()
|
||||
location["name"] = %"Location"
|
||||
location["value"] = %user.location
|
||||
location["verified_at"] = newJNull()
|
||||
fields.add(location)
|
||||
|
||||
if user.website.len > 0:
|
||||
var website = newJObject()
|
||||
website["name"] = %"Website"
|
||||
website["value"] = %(&"<a href=\"{user.website}\" target=\"_blank\" rel=\"nofollow noopener noreferrer me\" translate=\"no\">{user.website}</a>")
|
||||
website["verified_at"] = newJNull()
|
||||
fields.add(website)
|
||||
|
||||
var userJson = newJObject()
|
||||
userJson["id"] = %user.id
|
||||
userJson["username"] = %user.username
|
||||
userJson["acct"] = %user.username
|
||||
userJson["display_name"] = %user.fullname
|
||||
userJson["locked"] = %user.protected
|
||||
userJson["bot"] = %false # TODO?
|
||||
userJson["discoverable"] = %true
|
||||
userJson["indexable"] = %false
|
||||
userJson["group"] = %false
|
||||
userJson["created_at"] = %($user.joinDate)
|
||||
userJson["note"] = %user.bio
|
||||
userJson["url"] = %(&"{getUrlPrefix(cfg)}/{user.username}")
|
||||
userJson["uri"] = %(&"{getUrlPrefix(cfg)}/{user.username}")
|
||||
userJson["avatar"] = %(getUrlPrefix(cfg) & getPicUrl(user.userPic))
|
||||
userJson["avatar_static"] = %(getUrlPrefix(cfg) & getPicUrl(user.userPic))
|
||||
userJson["header"] = %(getUrlPrefix(cfg) & getPicUrl(user.banner))
|
||||
userJson["header_static"] = %(getUrlPrefix(cfg) & getPicUrl(user.banner))
|
||||
userJson["followers_count"] = %user.followers
|
||||
userJson["following_count"] = %user.following
|
||||
userJson["statuses_count"] = %user.tweets
|
||||
userJson["hide_collections"] = %false
|
||||
userJson["noindex"] = %false
|
||||
userJson["emojis"] = %(@[])
|
||||
userJson["roles"] = %(@[])
|
||||
userJson["fields"] = %fields
|
||||
|
||||
result = userJson
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user