diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-03-07 01:54:56 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-03-07 01:54:56 +0900 |
| commit | 06eabcbc636800c551e4ba602325d227ca463460 (patch) | |
| tree | bc521908347be88f42fc76798ea5c1985d1a47bf /src/api/endpoints | |
| parent | v3999 (diff) | |
| download | sharkey-06eabcbc636800c551e4ba602325d227ca463460.tar.gz sharkey-06eabcbc636800c551e4ba602325d227ca463460.tar.bz2 sharkey-06eabcbc636800c551e4ba602325d227ca463460.zip | |
wip
Diffstat (limited to 'src/api/endpoints')
| -rw-r--r-- | src/api/endpoints/othello/sessions/create.ts | 18 | ||||
| -rw-r--r-- | src/api/endpoints/othello/sessions/in.ts | 34 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/api/endpoints/othello/sessions/create.ts b/src/api/endpoints/othello/sessions/create.ts new file mode 100644 index 0000000000..09c3cff62b --- /dev/null +++ b/src/api/endpoints/othello/sessions/create.ts @@ -0,0 +1,18 @@ +import rndstr from 'rndstr'; +import Session, { pack } from '../../../models/othello-session'; + +module.exports = (params, user) => new Promise(async (res, rej) => { + // 以前のセッションはすべて削除しておく + await Session.remove({ + user_id: user._id + }); + + // セッションを作成 + const session = await Session.insert({ + user_id: user._id, + code: rndstr('a-z0-9', 3) + }); + + // Reponse + res(await pack(session)); +}); diff --git a/src/api/endpoints/othello/sessions/in.ts b/src/api/endpoints/othello/sessions/in.ts new file mode 100644 index 0000000000..d4b95bc4f9 --- /dev/null +++ b/src/api/endpoints/othello/sessions/in.ts @@ -0,0 +1,34 @@ +import $ from 'cafy'; +import Session from '../../../models/othello-session'; +import Game, { pack } from '../../../models/othello-game'; + +module.exports = (params, user) => new Promise(async (res, rej) => { + // Get 'code' parameter + const [code, codeErr] = $(params.code).string().$; + if (codeErr) return rej('invalid code param'); + + // Fetch session + const session = await Session.findOne({ code }); + + if (session == null) { + return rej('session not found'); + } + + // Destroy session + Session.remove({ + _id: session._id + }); + + const parentIsBlack = Math.random() > 0.5; + + // Start game + const game = await Game.insert({ + created_at: new Date(), + black_user_id: parentIsBlack ? session.user_id : user._id, + white_user_id: parentIsBlack ? user._id : session.user_id, + logs: [] + }); + + // Reponse + res(await pack(game)); +}); |