summaryrefslogtreecommitdiff
path: root/src/server/api/service/discord.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2019-04-13 01:43:22 +0900
committerGitHub <noreply@github.com>2019-04-13 01:43:22 +0900
commit987168b863c52d0548050ffbac569782bb9a8cef (patch)
treec9aa2243dcdcbd044688d201a51c601574bff259 /src/server/api/service/discord.ts
parentFix bug (diff)
downloadmisskey-987168b863c52d0548050ffbac569782bb9a8cef.tar.gz
misskey-987168b863c52d0548050ffbac569782bb9a8cef.tar.bz2
misskey-987168b863c52d0548050ffbac569782bb9a8cef.zip
strictNullChecks (#4666)
* wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip
Diffstat (limited to 'src/server/api/service/discord.ts')
-rw-r--r--src/server/api/service/discord.ts91
1 files changed, 48 insertions, 43 deletions
diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts
index 879b8b4849..b2561dee61 100644
--- a/src/server/api/service/discord.ts
+++ b/src/server/api/service/discord.ts
@@ -10,6 +10,7 @@ import signin from '../common/signin';
import fetchMeta from '../../../misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
+import { ensure } from '../../../prelude/ensure';
function getUserToken(ctx: Koa.BaseContext) {
return ((ctx.headers['cookie'] || '').match(/i=(!\w+)/) || [null, null])[1];
@@ -43,7 +44,7 @@ router.get('/disconnect/discord', async ctx => {
const user = await Users.findOne({
host: null,
token: userToken
- });
+ }).then(ensure);
await UserProfiles.update({
userId: user.id
@@ -71,8 +72,8 @@ async function getOAuth2() {
if (meta.enableDiscordIntegration) {
return new OAuth2(
- meta.discordClientId,
- meta.discordClientSecret,
+ meta.discordClientId!,
+ meta.discordClientSecret!,
'https://discordapp.com/',
'api/oauth2/authorize',
'api/oauth2/token');
@@ -82,6 +83,8 @@ async function getOAuth2() {
}
router.get('/connect/discord', async ctx => {
+ if (redis == null) return;
+
if (!compareOrigin(ctx)) {
ctx.throw(400, 'invalid origin');
return;
@@ -103,10 +106,12 @@ router.get('/connect/discord', async ctx => {
redis.set(userToken, JSON.stringify(params));
const oauth2 = await getOAuth2();
- ctx.redirect(oauth2.getAuthorizeUrl(params));
+ ctx.redirect(oauth2!.getAuthorizeUrl(params));
});
router.get('/signin/discord', async ctx => {
+ if (redis == null) return;
+
const sessid = uuid();
const params = {
@@ -129,10 +134,12 @@ router.get('/signin/discord', async ctx => {
redis.set(sessid, JSON.stringify(params));
const oauth2 = await getOAuth2();
- ctx.redirect(oauth2.getAuthorizeUrl(params));
+ ctx.redirect(oauth2!.getAuthorizeUrl(params));
});
router.get('/dc/cb', async ctx => {
+ if (redis == null) return;
+
const userToken = getUserToken(ctx);
const oauth2 = await getOAuth2();
@@ -153,7 +160,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis.get(sessid, async (_, state) => {
+ redis!.get(sessid, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -164,24 +171,22 @@ router.get('/dc/cb', async ctx => {
}
const { accessToken, refreshToken, expiresDate } = await new Promise<any>((res, rej) =>
- oauth2.getOAuthAccessToken(
- code,
- {
- grant_type: 'authorization_code',
- redirect_uri
- },
- (err, accessToken, refreshToken, result) => {
- if (err)
- rej(err);
- else if (result.error)
- rej(result.error);
- else
+ oauth2!.getOAuthAccessToken(code, {
+ grant_type: 'authorization_code',
+ redirect_uri
+ }, (err, accessToken, refreshToken, result) => {
+ if (err) {
+ rej(err);
+ } else if (result.error) {
+ rej(result.error);
+ } else {
res({
accessToken,
refreshToken,
expiresDate: Date.now() + Number(result.expires_in) * 1000
});
- }));
+ }
+ }));
const { id, username, discriminator } = await new Promise<any>((res, rej) =>
request({
@@ -191,10 +196,11 @@ router.get('/dc/cb', async ctx => {
'User-Agent': config.userAgent
}
}, (err, response, body) => {
- if (err)
+ if (err) {
rej(err);
- else
+ } else {
res(JSON.parse(body));
+ }
}));
if (!id || !username || !discriminator) {
@@ -235,7 +241,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis.get(userToken, async (_, state) => {
+ redis!.get(userToken, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -246,24 +252,22 @@ router.get('/dc/cb', async ctx => {
}
const { accessToken, refreshToken, expiresDate } = await new Promise<any>((res, rej) =>
- oauth2.getOAuthAccessToken(
- code,
- {
- grant_type: 'authorization_code',
- redirect_uri
- },
- (err, accessToken, refreshToken, result) => {
- if (err)
- rej(err);
- else if (result.error)
- rej(result.error);
- else
- res({
- accessToken,
- refreshToken,
- expiresDate: Date.now() + Number(result.expires_in) * 1000
- });
- }));
+ oauth2!.getOAuthAccessToken(code, {
+ grant_type: 'authorization_code',
+ redirect_uri
+ }, (err, accessToken, refreshToken, result) => {
+ if (err) {
+ rej(err);
+ } else if (result.error) {
+ rej(result.error);
+ } else {
+ res({
+ accessToken,
+ refreshToken,
+ expiresDate: Date.now() + Number(result.expires_in) * 1000
+ });
+ }
+ }));
const { id, username, discriminator } = await new Promise<any>((res, rej) =>
request({
@@ -273,10 +277,11 @@ router.get('/dc/cb', async ctx => {
'User-Agent': config.userAgent
}
}, (err, response, body) => {
- if (err)
+ if (err) {
rej(err);
- else
+ } else {
res(JSON.parse(body));
+ }
}));
if (!id || !username || !discriminator) {
@@ -287,7 +292,7 @@ router.get('/dc/cb', async ctx => {
const user = await Users.findOne({
host: null,
token: userToken
- });
+ }).then(ensure);
await UserProfiles.update({ userId: user.id }, {
discord: true,