This commit is contained in:
syuilo 2018-11-01 09:19:22 +09:00
parent 325cd03a59
commit 1fca8d322c
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
6 changed files with 27 additions and 39 deletions

View file

@ -22,27 +22,28 @@ export type IApp = {
/**
* Pack an app for API response
*
* @param {any} app
* @param {any} me?
* @param {any} options?
* @return {Promise<any>}
*/
export const pack = (
app: any,
me?: any,
options?: {
detail?: boolean,
includeSecret?: boolean,
includeProfileImageIds?: boolean
}
) => new Promise<any>(async (resolve, reject) => {
const opts = options || {
const opts = Object.assign({
detail: false,
includeSecret: false,
includeProfileImageIds: false
};
}, options);
let _app: any;
const fields = opts.detail ? {} : {
name: true
};
// Populate the app if 'app' is ID
if (isObjectId(app)) {
_app = await App.findOne({
@ -51,7 +52,7 @@ export const pack = (
} else if (typeof app === 'string') {
_app = await App.findOne({
_id: new mongo.ObjectID(app)
});
}, { fields });
} else {
_app = deepcopy(app);
}

View file

@ -223,33 +223,16 @@ export const pack = (
let _user: any;
const fields = opts.detail ? {
} : {
usernameLower: false,
bannerColor: false,
bannerUrl: false,
description: false,
notesCount: false,
followersCount: false,
followingCount: false,
lastUsedAt: false,
settings: false,
clientSettings: false,
profile: false,
keywords: false,
domains: false,
pinnedNoteIds: false,
wallpaperColor: false,
wallpaperId: false,
wallpaperUrl: false,
twitter: false,
pendingReceivedFollowRequestsCount: false,
featured: false,
sharedInbox: false,
endpoints: false,
inbox: false,
twoFactorTempSecret: false,
twoFactorSecret: false
const fields = opts.detail ? {} : {
name: true,
username: true,
host: true,
avatarColor: true,
avatarUrl: true,
isCat: true,
isBot: true,
isAdmin: true,
isVerified: true
};
// Populate the user if 'user' is ID

View file

@ -44,6 +44,7 @@ export default async (params: any, user: ILocalUser) => new Promise(async (res,
// Response
res(await pack(app, null, {
detail: true,
includeSecret: true
}));
});

View file

@ -21,6 +21,7 @@ export default (params: any, user: ILocalUser, app: IApp) => new Promise(async (
// Send response
res(await pack(ap, user, {
detail: true,
includeSecret: isSecure && ap.userId.equals(user._id)
}));
});

View file

@ -34,6 +34,7 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
});
// Serialize
res(await Promise.all(tokens.map(async token =>
await pack(token.appId))));
res(await Promise.all(tokens.map(token => pack(token.appId, user, {
detail: true
}))));
});

View file

@ -35,6 +35,7 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
});
// Reply
res(await Promise.all(apps.map(async app =>
await pack(app))));
res(await Promise.all(apps.map(app => pack(app, user, {
detail: true
}))));
});