about summary refs log tree commit diff
path: root/streaming
diff options
context:
space:
mode:
authorYamagishi Kazutoshi <ykzts@desire.sh>2018-05-21 19:43:38 +0900
committerEugen Rochko <eugen@zeonfederated.com>2018-05-21 12:43:38 +0200
commit7403e5d306d36c83bfb80cd900235373186cd51a (patch)
tree77d418967503aaf3f8990f3c39ff6480fd775efe /streaming
parent05f8c375a245ff6709a20f6a4ac5115a75db3f2b (diff)
Add media timeline (#6631)
Diffstat (limited to 'streaming')
-rw-r--r--streaming/index.js18
1 files changed, 16 insertions, 2 deletions
diff --git a/streaming/index.js b/streaming/index.js
index 48bab8078..4eaf66865 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -241,7 +241,9 @@ const startWorker = (workerId) => {
 
   const PUBLIC_STREAMS = [
     'public',
+    'public:media',
     'public:local',
+    'public:local:media',
     'hashtag',
     'hashtag:local',
   ];
@@ -459,11 +461,17 @@ const startWorker = (workerId) => {
   });
 
   app.get('/api/v1/streaming/public', (req, res) => {
-    streamFrom('timeline:public', req, streamToHttp(req, res), streamHttpEnd(req), true);
+    const onlyMedia = req.query.only_media === '1' || req.query.only_media === 'true';
+    const channel   = onlyMedia ? 'timeline:public:media' : 'timeline:public';
+
+    streamFrom(channel, req, streamToHttp(req, res), streamHttpEnd(req), true);
   });
 
   app.get('/api/v1/streaming/public/local', (req, res) => {
-    streamFrom('timeline:public:local', req, streamToHttp(req, res), streamHttpEnd(req), true);
+    const onlyMedia = req.query.only_media === '1' || req.query.only_media === 'true';
+    const channel   = onlyMedia ? 'timeline:public:local:media' : 'timeline:public:local';
+
+    streamFrom(channel, req, streamToHttp(req, res), streamHttpEnd(req), true);
   });
 
   app.get('/api/v1/streaming/direct', (req, res) => {
@@ -521,6 +529,12 @@ const startWorker = (workerId) => {
     case 'public:local':
       streamFrom('timeline:public:local', req, streamToWs(req, ws), streamWsEnd(req, ws), true);
       break;
+    case 'public:media':
+      streamFrom('timeline:public:media', req, streamToWs(req, ws), streamWsEnd(req, ws), true);
+      break;
+    case 'public:local:media':
+      streamFrom('timeline:public:local:media', req, streamToWs(req, ws), streamWsEnd(req, ws), true);
+      break;
     case 'direct':
       streamFrom(`timeline:direct:${req.accountId}`, req, streamToWs(req, ws), streamWsEnd(req, ws), true);
       break;