summaryrefslogtreecommitdiff
path: root/src/api/models/user.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-03-26 17:54:10 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-03-26 17:54:10 +0900
commit4c0a341ccff707a056e48736a0e9527baac9ab7a (patch)
tree5c59907ef68e5b5de92dda80c3b8530b02021363 /src/api/models/user.ts
parentMerge pull request #1297 from rinsuki/fix/1296-broken (diff)
downloadsharkey-4c0a341ccff707a056e48736a0e9527baac9ab7a.tar.gz
sharkey-4c0a341ccff707a056e48736a0e9527baac9ab7a.tar.bz2
sharkey-4c0a341ccff707a056e48736a0e9527baac9ab7a.zip
Implement packForAp
Diffstat (limited to 'src/api/models/user.ts')
-rw-r--r--src/api/models/user.ts51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/api/models/user.ts b/src/api/models/user.ts
index 372e2c5dac..545747b50f 100644
--- a/src/api/models/user.ts
+++ b/src/api/models/user.ts
@@ -262,6 +262,57 @@ export const pack = (
resolve(_user);
});
+/**
+ * Pack a user for ActivityPub
+ *
+ * @param user target
+ * @return Packed user
+ */
+export const packForAp = (
+ user: string | mongo.ObjectID | IUser
+) => new Promise<any>(async (resolve, reject) => {
+
+ let _user: any;
+
+ const fields = {
+ // something
+ };
+
+ // Populate the user if 'user' is ID
+ if (mongo.ObjectID.prototype.isPrototypeOf(user)) {
+ _user = await User.findOne({
+ _id: user
+ }, { fields });
+ } else if (typeof user === 'string') {
+ _user = await User.findOne({
+ _id: new mongo.ObjectID(user)
+ }, { fields });
+ } else {
+ _user = deepcopy(user);
+ }
+
+ if (!_user) return reject('invalid user arg.');
+
+ resolve({
+ "@context": ["https://www.w3.org/ns/activitystreams", {
+ "@language": "ja"
+ }],
+ "type": "Person",
+ "id": `${config.url}/${_user.username}`,
+ "following": `${config.url}/${_user.username}/following.json`,
+ "followers": `${config.url}/${_user.username}/followers.json`,
+ "liked": `${config.url}/${_user.username}/liked.json`,
+ "inbox": `${config.url}/${_user.username}/inbox.json`,
+ "outbox": `${config.url}/${_user.username}/feed.json`,
+ "preferredUsername": _user.username,
+ "name": _user.name,
+ "summary": _user.description,
+ "icon": [
+ `${config.drive_url}/${_user.avatar_id}`
+ ]
+ });
+});
+
/*
function img(url) {
return {