summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-05-19 07:33:34 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-05-19 07:33:34 +0900
commite6eb1b2ae1c38b335ff4755d35a33a0ca4450454 (patch)
treef10a35f91071e36f787f77c242b127b7ad01c416 /src/server/api
parentFix (diff)
downloadsharkey-e6eb1b2ae1c38b335ff4755d35a33a0ca4450454.tar.gz
sharkey-e6eb1b2ae1c38b335ff4755d35a33a0ca4450454.tar.bz2
sharkey-e6eb1b2ae1c38b335ff4755d35a33a0ca4450454.zip
Clean up
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/endpoints.ts28
-rw-r--r--src/server/api/endpoints/channels.ts58
-rw-r--r--src/server/api/endpoints/channels/create.ts35
-rw-r--r--src/server/api/endpoints/channels/notes.ts74
-rw-r--r--src/server/api/endpoints/channels/show.ts26
-rw-r--r--src/server/api/endpoints/channels/unwatch.ts56
-rw-r--r--src/server/api/endpoints/channels/watch.ts54
-rw-r--r--src/server/api/endpoints/notes/create.ts45
-rw-r--r--src/server/api/endpoints/notes/timeline.ts33
-rw-r--r--src/server/api/stream/channel.ts14
-rw-r--r--src/server/api/streaming.ts6
11 files changed, 5 insertions, 424 deletions
diff --git a/src/server/api/endpoints.ts b/src/server/api/endpoints.ts
index 734b8273f1..7647c76d3d 100644
--- a/src/server/api/endpoints.ts
+++ b/src/server/api/endpoints.ts
@@ -621,33 +621,7 @@ const endpoints: Endpoint[] = [
name: 'messaging/messages/create',
withCredential: true,
kind: 'messaging-write'
- },
- {
- name: 'channels/create',
- withCredential: true,
- limit: {
- duration: ms('1hour'),
- max: 3,
- minInterval: ms('10seconds')
- }
- },
- {
- name: 'channels/show'
- },
- {
- name: 'channels/notes'
- },
- {
- name: 'channels/watch',
- withCredential: true
- },
- {
- name: 'channels/unwatch',
- withCredential: true
- },
- {
- name: 'channels'
- },
+ }
];
export default endpoints;
diff --git a/src/server/api/endpoints/channels.ts b/src/server/api/endpoints/channels.ts
deleted file mode 100644
index ceef4b9cb9..0000000000
--- a/src/server/api/endpoints/channels.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy'; import ID from '../../../cafy-id';
-import Channel, { pack } from '../../../models/channel';
-
-/**
- * Get all channels
- *
- * @param {any} params
- * @param {any} me
- * @return {Promise<any>}
- */
-module.exports = (params, me) => new Promise(async (res, rej) => {
- // Get 'limit' parameter
- const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
- if (limitErr) return rej('invalid limit param');
-
- // Get 'sinceId' parameter
- const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
- if (sinceIdErr) return rej('invalid sinceId param');
-
- // Get 'untilId' parameter
- const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
- if (untilIdErr) return rej('invalid untilId param');
-
- // Check if both of sinceId and untilId is specified
- if (sinceId && untilId) {
- return rej('cannot set sinceId and untilId');
- }
-
- // Construct query
- const sort = {
- _id: -1
- };
- const query = {} as any;
- if (sinceId) {
- sort._id = 1;
- query._id = {
- $gt: sinceId
- };
- } else if (untilId) {
- query._id = {
- $lt: untilId
- };
- }
-
- // Issue query
- const channels = await Channel
- .find(query, {
- limit: limit,
- sort: sort
- });
-
- // Serialize
- res(await Promise.all(channels.map(async channel =>
- await pack(channel, me))));
-});
diff --git a/src/server/api/endpoints/channels/create.ts b/src/server/api/endpoints/channels/create.ts
deleted file mode 100644
index 0e3c9dc5ac..0000000000
--- a/src/server/api/endpoints/channels/create.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy';
-import Channel from '../../../../models/channel';
-import Watching from '../../../../models/channel-watching';
-import { pack } from '../../../../models/channel';
-
-/**
- * Create a channel
- */
-module.exports = async (params, user) => new Promise(async (res, rej) => {
- // Get 'title' parameter
- const [title, titleErr] = $.str.range(1, 100).get(params.title);
- if (titleErr) return rej('invalid title param');
-
- // Create a channel
- const channel = await Channel.insert({
- createdAt: new Date(),
- userId: user._id,
- title: title,
- index: 0,
- watchingCount: 1
- });
-
- // Response
- res(await pack(channel));
-
- // Create Watching
- await Watching.insert({
- createdAt: new Date(),
- userId: user._id,
- channelId: channel._id
- });
-});
diff --git a/src/server/api/endpoints/channels/notes.ts b/src/server/api/endpoints/channels/notes.ts
deleted file mode 100644
index 463152e74a..0000000000
--- a/src/server/api/endpoints/channels/notes.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy'; import ID from '../../../../cafy-id';
-import { default as Channel, IChannel } from '../../../../models/channel';
-import Note, { pack } from '../../../../models/note';
-
-/**
- * Show a notes of a channel
- */
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'limit' parameter
- const [limit = 1000, limitErr] = $.num.optional().range(1, 1000).get(params.limit);
- if (limitErr) return rej('invalid limit param');
-
- // Get 'sinceId' parameter
- const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
- if (sinceIdErr) return rej('invalid sinceId param');
-
- // Get 'untilId' parameter
- const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
- if (untilIdErr) return rej('invalid untilId param');
-
- // Check if both of sinceId and untilId is specified
- if (sinceId && untilId) {
- return rej('cannot set sinceId and untilId');
- }
-
- // Get 'channelId' parameter
- const [channelId, channelIdErr] = $.type(ID).get(params.channelId);
- if (channelIdErr) return rej('invalid channelId param');
-
- // Fetch channel
- const channel: IChannel = await Channel.findOne({
- _id: channelId
- });
-
- if (channel === null) {
- return rej('channel not found');
- }
-
- //#region Construct query
- const sort = {
- _id: -1
- };
-
- const query = {
- channelId: channel._id
- } as any;
-
- if (sinceId) {
- sort._id = 1;
- query._id = {
- $gt: sinceId
- };
- } else if (untilId) {
- query._id = {
- $lt: untilId
- };
- }
- //#endregion Construct query
-
- // Issue query
- const notes = await Note
- .find(query, {
- limit: limit,
- sort: sort
- });
-
- // Serialize
- res(await Promise.all(notes.map(async (note) =>
- await pack(note, user)
- )));
-});
diff --git a/src/server/api/endpoints/channels/show.ts b/src/server/api/endpoints/channels/show.ts
deleted file mode 100644
index 1bba63d490..0000000000
--- a/src/server/api/endpoints/channels/show.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy'; import ID from '../../../../cafy-id';
-import Channel, { IChannel, pack } from '../../../../models/channel';
-
-/**
- * Show a channel
- */
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'channelId' parameter
- const [channelId, channelIdErr] = $.type(ID).get(params.channelId);
- if (channelIdErr) return rej('invalid channelId param');
-
- // Fetch channel
- const channel: IChannel = await Channel.findOne({
- _id: channelId
- });
-
- if (channel === null) {
- return rej('channel not found');
- }
-
- // Serialize
- res(await pack(channel, user));
-});
diff --git a/src/server/api/endpoints/channels/unwatch.ts b/src/server/api/endpoints/channels/unwatch.ts
deleted file mode 100644
index f7dddff461..0000000000
--- a/src/server/api/endpoints/channels/unwatch.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy'; import ID from '../../../../cafy-id';
-import Channel from '../../../../models/channel';
-import Watching from '../../../../models/channel-watching';
-
-/**
- * Unwatch a channel
- */
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'channelId' parameter
- const [channelId, channelIdErr] = $.type(ID).get(params.channelId);
- if (channelIdErr) return rej('invalid channelId param');
-
- //#region Fetch channel
- const channel = await Channel.findOne({
- _id: channelId
- });
-
- if (channel === null) {
- return rej('channel not found');
- }
- //#endregion
-
- //#region Check whether not watching
- const exist = await Watching.findOne({
- userId: user._id,
- channelId: channel._id,
- deletedAt: { $exists: false }
- });
-
- if (exist === null) {
- return rej('already not watching');
- }
- //#endregion
-
- // Delete watching
- await Watching.update({
- _id: exist._id
- }, {
- $set: {
- deletedAt: new Date()
- }
- });
-
- // Send response
- res();
-
- // Decrement watching count
- Channel.update(channel._id, {
- $inc: {
- watchingCount: -1
- }
- });
-});
diff --git a/src/server/api/endpoints/channels/watch.ts b/src/server/api/endpoints/channels/watch.ts
deleted file mode 100644
index 34243ff68b..0000000000
--- a/src/server/api/endpoints/channels/watch.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy'; import ID from '../../../../cafy-id';
-import Channel from '../../../../models/channel';
-import Watching from '../../../../models/channel-watching';
-
-/**
- * Watch a channel
- */
-module.exports = (params, user) => new Promise(async (res, rej) => {
- // Get 'channelId' parameter
- const [channelId, channelIdErr] = $.type(ID).get(params.channelId);
- if (channelIdErr) return rej('invalid channelId param');
-
- //#region Fetch channel
- const channel = await Channel.findOne({
- _id: channelId
- });
-
- if (channel === null) {
- return rej('channel not found');
- }
- //#endregion
-
- //#region Check whether already watching
- const exist = await Watching.findOne({
- userId: user._id,
- channelId: channel._id,
- deletedAt: { $exists: false }
- });
-
- if (exist !== null) {
- return rej('already watching');
- }
- //#endregion
-
- // Create Watching
- await Watching.insert({
- createdAt: new Date(),
- userId: user._id,
- channelId: channel._id
- });
-
- // Send response
- res();
-
- // Increment watching count
- Channel.update(channel._id, {
- $inc: {
- watchingCount: 1
- }
- });
-});
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 429b6d370a..182359f637 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -4,7 +4,6 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note, { INote, isValidText, isValidCw, pack } from '../../../../models/note';
import User, { ILocalUser } from '../../../../models/user';
-import Channel, { IChannel } from '../../../../models/channel';
import DriveFile from '../../../../models/drive-file';
import create from '../../../../services/note/create';
import { IApp } from '../../../../models/app';
@@ -89,7 +88,6 @@ module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res
if (renoteIdErr) return rej('invalid renoteId');
let renote: INote = null;
- let isQuote = false;
if (renoteId !== undefined) {
// Fetch renote to note
renote = await Note.findOne({
@@ -101,8 +99,6 @@ module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res
} else if (renote.renoteId && !renote.text && !renote.mediaIds) {
return rej('cannot renote to renote');
}
-
- isQuote = text != null || files != null;
}
// Get 'replyId' parameter
@@ -126,47 +122,6 @@ module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res
}
}
- // Get 'channelId' parameter
- const [channelId, channelIdErr] = $.type(ID).optional().get(params.channelId);
- if (channelIdErr) return rej('invalid channelId');
-
- let channel: IChannel = null;
- if (channelId !== undefined) {
- // Fetch channel
- channel = await Channel.findOne({
- _id: channelId
- });
-
- if (channel === null) {
- return rej('channel not found');
- }
-
- // 返信対象の投稿がこのチャンネルじゃなかったらダメ
- if (reply && !channelId.equals(reply.channelId)) {
- return rej('チャンネル内部からチャンネル外部の投稿に返信することはできません');
- }
-
- // Renote対象の投稿がこのチャンネルじゃなかったらダメ
- if (renote && !channelId.equals(renote.channelId)) {
- return rej('チャンネル内部からチャンネル外部の投稿をRenoteすることはできません');
- }
-
- // 引用ではないRenoteはダメ
- if (renote && !isQuote) {
- return rej('チャンネル内部では引用ではないRenoteをすることはできません');
- }
- } else {
- // 返信対象の投稿がチャンネルへの投稿だったらダメ
- if (reply && reply.channelId != null) {
- return rej('チャンネル外部からチャンネル内部の投稿に返信することはできません');
- }
-
- // Renote対象の投稿がチャンネルへの投稿だったらダメ
- if (renote && renote.channelId != null) {
- return rej('チャンネル外部からチャンネル内部の投稿をRenoteすることはできません');
- }
- }
-
// Get 'poll' parameter
const [poll, pollErr] = $.obj.optional().strict()
.have('choices', $.arr($.str)
diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts
index 78786d4a16..9f32555649 100644
--- a/src/server/api/endpoints/notes/timeline.ts
+++ b/src/server/api/endpoints/notes/timeline.ts
@@ -4,7 +4,6 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import Mute from '../../../../models/mute';
-import ChannelWatching from '../../../../models/channel-watching';
import { getFriends } from '../../common/get-friends';
import { pack } from '../../../../models/note';
@@ -45,18 +44,11 @@ module.exports = async (params, user, app) => {
const [includeRenotedMyNotes = true, includeRenotedMyNotesErr] = $.bool.optional().get(params.includeRenotedMyNotes);
if (includeRenotedMyNotesErr) throw 'invalid includeRenotedMyNotes param';
- const [followings, watchingChannelIds, mutedUserIds] = await Promise.all([
+ const [followings, mutedUserIds] = await Promise.all([
// フォローを取得
// Fetch following
getFriends(user._id),
- // Watchしているチャンネルを取得
- ChannelWatching.find({
- userId: user._id,
- // 削除されたドキュメントは除く
- deletedAt: { $exists: false }
- }).then(watches => watches.map(w => w.channelId)),
-
// ミュートしているユーザーを取得
Mute.find({
muterId: user._id
@@ -93,26 +85,9 @@ module.exports = async (params, user, app) => {
const query = {
$and: [{
- $or: [{
- $and: [{
- // フォローしている人のタイムラインへの投稿
- $or: followQuery
- }, {
- // 「タイムラインへの」投稿に限定するためにチャンネルが指定されていないもののみに限る
- $or: [{
- channelId: {
- $exists: false
- }
- }, {
- channelId: null
- }]
- }]
- }, {
- // Watchしているチャンネルへの投稿
- channelId: {
- $in: watchingChannelIds
- }
- }],
+ // フォローしている人の投稿
+ $or: followQuery,
+
// mute
userId: {
$nin: mutedUserIds
diff --git a/src/server/api/stream/channel.ts b/src/server/api/stream/channel.ts
deleted file mode 100644
index cb04278237..0000000000
--- a/src/server/api/stream/channel.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import * as websocket from 'websocket';
-import * as redis from 'redis';
-import { ParsedUrlQuery } from 'querystring';
-
-export default function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient): void {
- const q = request.resourceURL.query as ParsedUrlQuery;
- const channel = q.channel;
-
- // Subscribe channel stream
- subscriber.subscribe(`misskey:channel-stream:${channel}`);
- subscriber.on('message', (_, data) => {
- connection.send(data);
- });
-}
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts
index e4884ed7c4..6825b6336a 100644
--- a/src/server/api/streaming.ts
+++ b/src/server/api/streaming.ts
@@ -14,7 +14,6 @@ import othelloGameStream from './stream/othello-game';
import othelloStream from './stream/othello';
import serverStream from './stream/server';
import requestsStream from './stream/requests';
-import channelStream from './stream/channel';
import { ParsedUrlQuery } from 'querystring';
import authenticate from './authenticate';
@@ -48,11 +47,6 @@ module.exports = (server: http.Server) => {
subscriber.quit();
});
- if (request.resourceURL.pathname === '/channel') {
- channelStream(request, connection, subscriber);
- return;
- }
-
const q = request.resourceURL.query as ParsedUrlQuery;
const [user, app] = await authenticate(q.i as string);