summaryrefslogtreecommitdiff
path: root/src/api/endpoints/othello
diff options
context:
space:
mode:
authorAkihiko Odaki <nekomanma@pixiv.co.jp>2018-03-29 01:20:40 +0900
committerAkihiko Odaki <nekomanma@pixiv.co.jp>2018-03-29 01:54:41 +0900
commit90f8fe7e538bb7e52d2558152a0390e693f39b11 (patch)
tree0f830887053c8f352b1cd0c13ca715fd14c1f030 /src/api/endpoints/othello
parentImplement remote account resolution (diff)
downloadsharkey-90f8fe7e538bb7e52d2558152a0390e693f39b11.tar.gz
sharkey-90f8fe7e538bb7e52d2558152a0390e693f39b11.tar.bz2
sharkey-90f8fe7e538bb7e52d2558152a0390e693f39b11.zip
Introduce processor
Diffstat (limited to 'src/api/endpoints/othello')
-rw-r--r--src/api/endpoints/othello/games.ts62
-rw-r--r--src/api/endpoints/othello/games/show.ts32
-rw-r--r--src/api/endpoints/othello/invitations.ts15
-rw-r--r--src/api/endpoints/othello/match.ts95
-rw-r--r--src/api/endpoints/othello/match/cancel.ts9
5 files changed, 0 insertions, 213 deletions
diff --git a/src/api/endpoints/othello/games.ts b/src/api/endpoints/othello/games.ts
deleted file mode 100644
index 2a6bbb4043..0000000000
--- a/src/api/endpoints/othello/games.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import $ from 'cafy';
-import Game, { pack } from '../../models/othello-game';
-
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'my' parameter
- const [my = false, myErr] = $(params.my).optional.boolean().$;
- if (myErr) return rej('invalid my param');
-
- // Get 'limit' parameter
- const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
- if (limitErr) return rej('invalid limit param');
-
- // Get 'since_id' parameter
- const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
- if (sinceIdErr) return rej('invalid since_id param');
-
- // Get 'until_id' parameter
- const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
- if (untilIdErr) return rej('invalid until_id param');
-
- // Check if both of since_id and until_id is specified
- if (sinceId && untilId) {
- return rej('cannot set since_id and until_id');
- }
-
- const q: any = my ? {
- is_started: true,
- $or: [{
- user1_id: user._id
- }, {
- user2_id: user._id
- }]
- } : {
- is_started: true
- };
-
- const sort = {
- _id: -1
- };
-
- if (sinceId) {
- sort._id = 1;
- q._id = {
- $gt: sinceId
- };
- } else if (untilId) {
- q._id = {
- $lt: untilId
- };
- }
-
- // Fetch games
- const games = await Game.find(q, {
- sort,
- limit
- });
-
- // Reponse
- res(Promise.all(games.map(async (g) => await pack(g, user, {
- detail: false
- }))));
-});
diff --git a/src/api/endpoints/othello/games/show.ts b/src/api/endpoints/othello/games/show.ts
deleted file mode 100644
index 2b0db4dd00..0000000000
--- a/src/api/endpoints/othello/games/show.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import $ from 'cafy';
-import Game, { pack } from '../../../models/othello-game';
-import Othello from '../../../../common/othello/core';
-
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'game_id' parameter
- const [gameId, gameIdErr] = $(params.game_id).id().$;
- if (gameIdErr) return rej('invalid game_id param');
-
- const game = await Game.findOne({ _id: gameId });
-
- if (game == null) {
- return rej('game not found');
- }
-
- const o = new Othello(game.settings.map, {
- isLlotheo: game.settings.is_llotheo,
- canPutEverywhere: game.settings.can_put_everywhere,
- loopedBoard: game.settings.looped_board
- });
-
- game.logs.forEach(log => {
- o.put(log.color, log.pos);
- });
-
- const packed = await pack(game, user);
-
- res(Object.assign({
- board: o.board,
- turn: o.turn
- }, packed));
-});
diff --git a/src/api/endpoints/othello/invitations.ts b/src/api/endpoints/othello/invitations.ts
deleted file mode 100644
index 02fb421fbc..0000000000
--- a/src/api/endpoints/othello/invitations.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import Matching, { pack as packMatching } from '../../models/othello-matching';
-
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Find session
- const invitations = await Matching.find({
- child_id: user._id
- }, {
- sort: {
- _id: -1
- }
- });
-
- // Reponse
- res(Promise.all(invitations.map(async (i) => await packMatching(i, user))));
-});
diff --git a/src/api/endpoints/othello/match.ts b/src/api/endpoints/othello/match.ts
deleted file mode 100644
index b73e105ef0..0000000000
--- a/src/api/endpoints/othello/match.ts
+++ /dev/null
@@ -1,95 +0,0 @@
-import $ from 'cafy';
-import Matching, { pack as packMatching } from '../../models/othello-matching';
-import Game, { pack as packGame } from '../../models/othello-game';
-import User from '../../models/user';
-import publishUserStream, { publishOthelloStream } from '../../event';
-import { eighteight } from '../../../common/othello/maps';
-
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'user_id' parameter
- const [childId, childIdErr] = $(params.user_id).id().$;
- if (childIdErr) return rej('invalid user_id param');
-
- // Myself
- if (childId.equals(user._id)) {
- return rej('invalid user_id param');
- }
-
- // Find session
- const exist = await Matching.findOne({
- parent_id: childId,
- child_id: user._id
- });
-
- if (exist) {
- // Destroy session
- Matching.remove({
- _id: exist._id
- });
-
- // Create game
- const game = await Game.insert({
- created_at: new Date(),
- user1_id: exist.parent_id,
- user2_id: user._id,
- user1_accepted: false,
- user2_accepted: false,
- is_started: false,
- is_ended: false,
- logs: [],
- settings: {
- map: eighteight.data,
- bw: 'random',
- is_llotheo: false
- }
- });
-
- // Reponse
- res(await packGame(game, user));
-
- publishOthelloStream(exist.parent_id, 'matched', await packGame(game, exist.parent_id));
-
- const other = await Matching.count({
- child_id: user._id
- });
-
- if (other == 0) {
- publishUserStream(user._id, 'othello_no_invites');
- }
- } else {
- // Fetch child
- const child = await User.findOne({
- _id: childId
- }, {
- fields: {
- _id: true
- }
- });
-
- if (child === null) {
- return rej('user not found');
- }
-
- // 以前のセッションはすべて削除しておく
- await Matching.remove({
- parent_id: user._id
- });
-
- // セッションを作成
- const matching = await Matching.insert({
- created_at: new Date(),
- parent_id: user._id,
- child_id: child._id
- });
-
- // Reponse
- res();
-
- const packed = await packMatching(matching, child);
-
- // 招待
- publishOthelloStream(child._id, 'invited', packed);
-
- publishUserStream(child._id, 'othello_invited', packed);
- }
-});
diff --git a/src/api/endpoints/othello/match/cancel.ts b/src/api/endpoints/othello/match/cancel.ts
deleted file mode 100644
index 6f751ef835..0000000000
--- a/src/api/endpoints/othello/match/cancel.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Matching from '../../../models/othello-matching';
-
-module.exports = (params, user) => new Promise(async (res, rej) => {
- await Matching.remove({
- parent_id: user._id
- });
-
- res();
-});