summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/common/get-host-lower.ts2
-rw-r--r--src/server/api/endpoints/users/notes.ts2
-rw-r--r--src/server/api/endpoints/users/recommendation.ts14
-rw-r--r--src/server/api/private/signup.ts1
-rw-r--r--src/server/api/service/twitter.ts80
5 files changed, 54 insertions, 45 deletions
diff --git a/src/server/api/common/get-host-lower.ts b/src/server/api/common/get-host-lower.ts
index fc4b30439e..550c233001 100644
--- a/src/server/api/common/get-host-lower.ts
+++ b/src/server/api/common/get-host-lower.ts
@@ -1,5 +1,5 @@
import { toUnicode } from 'punycode';
export default host => {
- return toUnicode(host).replace(/[A-Z]+/, match => match.toLowerCase());
+ return toUnicode(host).toLowerCase();
};
diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts
index e91b75e1d3..bd4247c79c 100644
--- a/src/server/api/endpoints/users/notes.ts
+++ b/src/server/api/endpoints/users/notes.ts
@@ -65,7 +65,7 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
const q = userId !== undefined
? { _id: userId }
- : { usernameLower: username.toLowerCase(), hostLower: getHostLower(host) } ;
+ : { usernameLower: username.toLowerCase(), host: getHostLower(host) } ;
// Lookup user
const user = await User.findOne(q, {
diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts
index 2de22da13e..e367e65a6c 100644
--- a/src/server/api/endpoints/users/recommendation.ts
+++ b/src/server/api/endpoints/users/recommendation.ts
@@ -30,15 +30,13 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
_id: {
$nin: followingIds
},
- $or: [
- {
- 'lastUsedAt': {
- $gte: new Date(Date.now() - ms('7days'))
- }
- }, {
- host: { $ne: null }
+ $or: [{
+ 'lastUsedAt': {
+ $gte: new Date(Date.now() - ms('7days'))
}
- ]
+ }, {
+ host: null
+ }]
}, {
limit: limit,
skip: offset,
diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts
index 15257b869f..cf51dec4d2 100644
--- a/src/server/api/private/signup.ts
+++ b/src/server/api/private/signup.ts
@@ -118,7 +118,6 @@ export default async (ctx: Koa.Context) => {
username: username,
usernameLower: username.toLowerCase(),
host: null,
- hostLower: null,
keypair: generateKeypair(),
token: secret,
email: null,
diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index 9fb01b44ef..284ae7ee22 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -107,7 +107,7 @@ if (config.twitter == null) {
ctx.redirect(twCtx.url);
});
- router.get('/tw/cb', ctx => {
+ router.get('/tw/cb', async ctx => {
const userToken = getUserToken(ctx);
if (userToken == null) {
@@ -118,21 +118,27 @@ if (config.twitter == null) {
return;
}
- redis.get(sessid, async (_, twCtx) => {
- const result = await twAuth.done(JSON.parse(twCtx), ctx.query.oauth_verifier);
+ const get = new Promise<any>((res, rej) => {
+ redis.get(sessid, async (_, twCtx) => {
+ res(twCtx);
+ });
+ });
- const user = await User.findOne({
- host: null,
- 'twitter.userId': result.userId
- }) as ILocalUser;
+ const twCtx = await get;
- if (user == null) {
- ctx.throw(404, `@${result.screenName}と連携しているMisskeyアカウントはありませんでした...`);
- return;
- }
+ const result = await twAuth.done(JSON.parse(twCtx), ctx.query.oauth_verifier);
- signin(ctx, user, true);
- });
+ const user = await User.findOne({
+ host: null,
+ 'twitter.userId': result.userId
+ }) as ILocalUser;
+
+ if (user == null) {
+ ctx.throw(404, `@${result.screenName}と連携しているMisskeyアカウントはありませんでした...`);
+ return;
+ }
+
+ signin(ctx, user, true);
} else {
const verifier = ctx.query.oauth_verifier;
@@ -141,31 +147,37 @@ if (config.twitter == null) {
return;
}
- redis.get(userToken, async (_, twCtx) => {
- const result = await twAuth.done(JSON.parse(twCtx), verifier);
-
- const user = await User.findOneAndUpdate({
- host: null,
- token: userToken
- }, {
- $set: {
- twitter: {
- accessToken: result.accessToken,
- accessTokenSecret: result.accessTokenSecret,
- userId: result.userId,
- screenName: result.screenName
- }
- }
+ const get = new Promise<any>((res, rej) => {
+ redis.get(userToken, async (_, twCtx) => {
+ res(twCtx);
});
+ });
+
+ const twCtx = await get;
- ctx.body = `Twitter: @${result.screenName} を、Misskey: @${user.username} に接続しました!`;
+ const result = await twAuth.done(JSON.parse(twCtx), verifier);
- // Publish i updated event
- event(user._id, 'i_updated', await pack(user, user, {
- detail: true,
- includeSecrets: true
- }));
+ const user = await User.findOneAndUpdate({
+ host: null,
+ token: userToken
+ }, {
+ $set: {
+ twitter: {
+ accessToken: result.accessToken,
+ accessTokenSecret: result.accessTokenSecret,
+ userId: result.userId,
+ screenName: result.screenName
+ }
+ }
});
+
+ ctx.body = `Twitter: @${result.screenName} を、Misskey: @${user.username} に接続しました!`;
+
+ // Publish i updated event
+ event(user._id, 'i_updated', await pack(user, user, {
+ detail: true,
+ includeSecrets: true
+ }));
}
});
}