summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2019-07-05 18:02:42 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-07-05 18:02:42 +0900
commit3c5324bbbb6982d419db76640b46341c3e088543 (patch)
tree534e73fa6f604e726a38f7947663e0899fb0eb05 /src/server/api/endpoints
parentMerge branch 'develop' (diff)
parent11.24.1 (diff)
downloadsharkey-3c5324bbbb6982d419db76640b46341c3e088543.tar.gz
sharkey-3c5324bbbb6982d419db76640b46341c3e088543.tar.bz2
sharkey-3c5324bbbb6982d419db76640b46341c3e088543.zip
Merge branch 'develop'
Diffstat (limited to 'src/server/api/endpoints')
-rw-r--r--src/server/api/endpoints/admin/emoji/add.ts3
-rw-r--r--src/server/api/endpoints/admin/emoji/remove.ts3
-rw-r--r--src/server/api/endpoints/admin/emoji/update.ts3
-rw-r--r--src/server/api/endpoints/hashtags/trend.ts11
-rw-r--r--src/server/api/endpoints/i/2fa/getkeys.ts67
-rw-r--r--src/server/api/endpoints/meta.ts2
6 files changed, 17 insertions, 72 deletions
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index c26e8dd04d..5ba00afde8 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -3,6 +3,7 @@ import define from '../../../define';
import { detectUrlMine } from '../../../../../misc/detect-url-mine';
import { Emojis } from '../../../../../models';
import { genId } from '../../../../../misc/gen-id';
+import { getConnection } from 'typeorm';
export const meta = {
desc: {
@@ -43,6 +44,8 @@ export default define(meta, async (ps) => {
type,
});
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
+
return {
id: emoji.id
};
diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
index 316834b884..3ebf933bc6 100644
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/src/server/api/endpoints/admin/emoji/remove.ts
@@ -2,6 +2,7 @@ import $ from 'cafy';
import define from '../../../define';
import { ID } from '../../../../../misc/cafy-id';
import { Emojis } from '../../../../../models';
+import { getConnection } from 'typeorm';
export const meta = {
desc: {
@@ -26,4 +27,6 @@ export default define(meta, async (ps) => {
if (emoji == null) throw new Error('emoji not found');
await Emojis.delete(emoji.id);
+
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
});
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
index 48b4a4ee23..f8bc638fcf 100644
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ b/src/server/api/endpoints/admin/emoji/update.ts
@@ -3,6 +3,7 @@ import define from '../../../define';
import { detectUrlMine } from '../../../../../misc/detect-url-mine';
import { ID } from '../../../../../misc/cafy-id';
import { Emojis } from '../../../../../models';
+import { getConnection } from 'typeorm';
export const meta = {
desc: {
@@ -47,4 +48,6 @@ export default define(meta, async (ps) => {
url: ps.url,
type,
});
+
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
});
diff --git a/src/server/api/endpoints/hashtags/trend.ts b/src/server/api/endpoints/hashtags/trend.ts
index 3154461e5a..a004732f81 100644
--- a/src/server/api/endpoints/hashtags/trend.ts
+++ b/src/server/api/endpoints/hashtags/trend.ts
@@ -54,8 +54,11 @@ export default define(meta, async () => {
const instance = await fetchMeta(true);
const hiddenTags = instance.hiddenTags.map(t => t.toLowerCase());
+ const now = new Date(); // 5分単位で丸めた現在日時
+ now.setMinutes(Math.round(now.getMinutes() / 5) * 5, 0, 0);
+
const tagNotes = await Notes.createQueryBuilder('note')
- .where(`note.createdAt > :date`, { date: new Date(Date.now() - rangeA) })
+ .where(`note.createdAt > :date`, { date: new Date(now.getTime() - rangeA) })
.andWhere(`note.tags != '{}'`)
.select(['note.tags', 'note.userId'])
.cache(60000) // 1 min
@@ -106,8 +109,8 @@ export default define(meta, async () => {
countPromises.push(Promise.all(hots.map(tag => Notes.createQueryBuilder('note')
.select('count(distinct note.userId)')
.where(':tag = ANY(note.tags)', { tag: tag })
- .andWhere('note.createdAt < :lt', { lt: new Date(Date.now() - (interval * i)) })
- .andWhere('note.createdAt > :gt', { gt: new Date(Date.now() - (interval * (i + 1))) })
+ .andWhere('note.createdAt < :lt', { lt: new Date(now.getTime() - (interval * i)) })
+ .andWhere('note.createdAt > :gt', { gt: new Date(now.getTime() - (interval * (i + 1))) })
.cache(60000) // 1 min
.getRawOne()
.then(x => parseInt(x.count, 10))
@@ -119,7 +122,7 @@ export default define(meta, async () => {
const totalCounts = await Promise.all(hots.map(tag => Notes.createQueryBuilder('note')
.select('count(distinct note.userId)')
.where(':tag = ANY(note.tags)', { tag: tag })
- .andWhere('note.createdAt > :gt', { gt: new Date(Date.now() - (interval * range)) })
+ .andWhere('note.createdAt > :gt', { gt: new Date(now.getTime() - (interval * range)) })
.cache(60000) // 1 min
.getRawOne()
.then(x => parseInt(x.count, 10))
diff --git a/src/server/api/endpoints/i/2fa/getkeys.ts b/src/server/api/endpoints/i/2fa/getkeys.ts
deleted file mode 100644
index bb1585d795..0000000000
--- a/src/server/api/endpoints/i/2fa/getkeys.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import $ from 'cafy';
-import * as bcrypt from 'bcryptjs';
-import * as crypto from 'crypto';
-import define from '../../../define';
-import { UserProfiles, UserSecurityKeys, AttestationChallenges } from '../../../../../models';
-import { ensure } from '../../../../../prelude/ensure';
-import { promisify } from 'util';
-import { hash } from '../../../2fa';
-import { genId } from '../../../../../misc/gen-id';
-
-export const meta = {
- requireCredential: true,
-
- secure: true,
-
- params: {
- password: {
- validator: $.str
- }
- }
-};
-
-const randomBytes = promisify(crypto.randomBytes);
-
-export default define(meta, async (ps, user) => {
- const profile = await UserProfiles.findOne(user.id).then(ensure);
-
- // Compare password
- const same = await bcrypt.compare(ps.password, profile.password!);
-
- if (!same) {
- throw new Error('incorrect password');
- }
-
- const keys = await UserSecurityKeys.find({
- userId: user.id
- });
-
- if (keys.length === 0) {
- throw new Error('no keys found');
- }
-
- // 32 byte challenge
- const entropy = await randomBytes(32);
- const challenge = entropy.toString('base64')
- .replace(/=/g, '')
- .replace(/\+/g, '-')
- .replace(/\//g, '_');
-
- const challengeId = genId();
-
- await AttestationChallenges.save({
- userId: user.id,
- id: challengeId,
- challenge: hash(Buffer.from(challenge, 'utf-8')).toString('hex'),
- createdAt: new Date(),
- registrationChallenge: false
- });
-
- return {
- challenge,
- challengeId,
- securityKeys: keys.map(key => ({
- id: key.id
- }))
- };
-});
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index a3390a011d..a754a885ab 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -95,7 +95,7 @@ export const meta = {
export default define(meta, async (ps, me) => {
const instance = await fetchMeta(true);
- const emojis = await Emojis.find({ where: { host: null }, cache: 3600000 }); // 1 hour
+ const emojis = await Emojis.find({ where: { host: null }, cache: { id: 'meta_emojis', milliseconds: 3600000 } }); // 1 hour
const response: any = {
maintainerName: instance.maintainerName,