summaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-11-16 23:46:36 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-11-16 23:46:36 +0900
commita8c6d0ed9023f7e0699cfe5c519532231e49cc3b (patch)
tree8e467523af5af939ebd6362636c9ba86909b889b /src/api
parentFix indentation (diff)
downloadmisskey-a8c6d0ed9023f7e0699cfe5c519532231e49cc3b.tar.gz
misskey-a8c6d0ed9023f7e0699cfe5c519532231e49cc3b.tar.bz2
misskey-a8c6d0ed9023f7e0699cfe5c519532231e49cc3b.zip
#465
Diffstat (limited to 'src/api')
-rw-r--r--src/api/common/add-file-to-drive.ts3
-rw-r--r--src/api/endpoints/drive/files/update.ts6
-rw-r--r--src/api/endpoints/drive/folders/create.ts6
-rw-r--r--src/api/endpoints/drive/folders/update.ts6
-rw-r--r--src/api/event.ts6
-rw-r--r--src/api/stream/drive.ts10
-rw-r--r--src/api/streaming.ts2
7 files changed, 29 insertions, 10 deletions
diff --git a/src/api/common/add-file-to-drive.ts b/src/api/common/add-file-to-drive.ts
index f96f58cb66..2a649788af 100644
--- a/src/api/common/add-file-to-drive.ts
+++ b/src/api/common/add-file-to-drive.ts
@@ -13,7 +13,7 @@ import prominence = require('prominence');
import DriveFile, { getGridFSBucket } from '../models/drive-file';
import DriveFolder from '../models/drive-folder';
import serialize from '../serializers/drive-file';
-import event from '../event';
+import event, { publishDriveStream } from '../event';
import config from '../../conf';
const log = debug('misskey:register-drive-file');
@@ -243,6 +243,7 @@ export default (user: any, file: string | stream.Readable, ...args) => new Promi
serialize(file).then(serializedFile => {
// Publish drive_file_created event
event(user._id, 'drive_file_created', serializedFile);
+ publishDriveStream(user._id, 'file_created', serializedFile);
// Register to search database
if (config.elasticsearch.enable) {
diff --git a/src/api/endpoints/drive/files/update.ts b/src/api/endpoints/drive/files/update.ts
index f265142c4d..f39a420d6e 100644
--- a/src/api/endpoints/drive/files/update.ts
+++ b/src/api/endpoints/drive/files/update.ts
@@ -6,7 +6,7 @@ import DriveFolder from '../../../models/drive-folder';
import DriveFile from '../../../models/drive-file';
import { validateFileName } from '../../../models/drive-file';
import serialize from '../../../serializers/drive-file';
-import event from '../../../event';
+import { publishDriveStream } from '../../../event';
/**
* Update a file
@@ -72,6 +72,6 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
// Response
res(fileObj);
- // Publish drive_file_updated event
- event(user._id, 'drive_file_updated', fileObj);
+ // Publish file_updated event
+ publishDriveStream(user._id, 'file_updated', fileObj);
});
diff --git a/src/api/endpoints/drive/folders/create.ts b/src/api/endpoints/drive/folders/create.ts
index 8c875db164..be847b2153 100644
--- a/src/api/endpoints/drive/folders/create.ts
+++ b/src/api/endpoints/drive/folders/create.ts
@@ -5,7 +5,7 @@ import $ from 'cafy';
import DriveFolder from '../../../models/drive-folder';
import { isValidFolderName } from '../../../models/drive-folder';
import serialize from '../../../serializers/drive-folder';
-import event from '../../../event';
+import { publishDriveStream } from '../../../event';
/**
* Create drive folder
@@ -52,6 +52,6 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
// Response
res(folderObj);
- // Publish drive_folder_created event
- event(user._id, 'drive_folder_created', folderObj);
+ // Publish folder_created event
+ publishDriveStream(user._id, 'folder_created', folderObj);
});
diff --git a/src/api/endpoints/drive/folders/update.ts b/src/api/endpoints/drive/folders/update.ts
index 4f2e3d2a7a..ff673402ab 100644
--- a/src/api/endpoints/drive/folders/update.ts
+++ b/src/api/endpoints/drive/folders/update.ts
@@ -5,7 +5,7 @@ import $ from 'cafy';
import DriveFolder from '../../../models/drive-folder';
import { isValidFolderName } from '../../../models/drive-folder';
import serialize from '../../../serializers/drive-folder';
-import event from '../../../event';
+import { publishDriveStream } from '../../../event';
/**
* Update a folder
@@ -96,6 +96,6 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
// Response
res(folderObj);
- // Publish drive_folder_updated event
- event(user._id, 'drive_folder_updated', folderObj);
+ // Publish folder_updated event
+ publishDriveStream(user._id, 'folder_updated', folderObj);
});
diff --git a/src/api/event.ts b/src/api/event.ts
index 927883737e..8605a0f1e4 100644
--- a/src/api/event.ts
+++ b/src/api/event.ts
@@ -17,6 +17,10 @@ class MisskeyEvent {
this.publish(`user-stream:${userId}`, type, typeof value === 'undefined' ? null : value);
}
+ public publishDriveStream(userId: ID, type: string, value?: any): void {
+ this.publish(`drive-stream:${userId}`, type, typeof value === 'undefined' ? null : value);
+ }
+
public publishPostStream(postId: ID, type: string, value?: any): void {
this.publish(`post-stream:${postId}`, type, typeof value === 'undefined' ? null : value);
}
@@ -46,6 +50,8 @@ const ev = new MisskeyEvent();
export default ev.publishUserStream.bind(ev);
+export const publishDriveStream = ev.publishDriveStream.bind(ev);
+
export const publishPostStream = ev.publishPostStream.bind(ev);
export const publishMessagingStream = ev.publishMessagingStream.bind(ev);
diff --git a/src/api/stream/drive.ts b/src/api/stream/drive.ts
new file mode 100644
index 0000000000..c97ab80dcc
--- /dev/null
+++ b/src/api/stream/drive.ts
@@ -0,0 +1,10 @@
+import * as websocket from 'websocket';
+import * as redis from 'redis';
+
+export default function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user: any): void {
+ // Subscribe drive stream
+ subscriber.subscribe(`misskey:drive-stream:${user._id}`);
+ subscriber.on('message', (_, data) => {
+ connection.send(data);
+ });
+}
diff --git a/src/api/streaming.ts b/src/api/streaming.ts
index 1f0ba848c1..c06d64c245 100644
--- a/src/api/streaming.ts
+++ b/src/api/streaming.ts
@@ -7,6 +7,7 @@ import AccessToken from './models/access-token';
import isNativeToken from './common/is-native-token';
import homeStream from './stream/home';
+import driveStream from './stream/drive';
import messagingStream from './stream/messaging';
import messagingIndexStream from './stream/messaging-index';
import serverStream from './stream/server';
@@ -58,6 +59,7 @@ module.exports = (server: http.Server) => {
const channel =
request.resourceURL.pathname === '/' ? homeStream :
+ request.resourceURL.pathname === '/drive' ? driveStream :
request.resourceURL.pathname === '/messaging' ? messagingStream :
request.resourceURL.pathname === '/messaging-index' ? messagingIndexStream :
null;