forked from cybrespace/mastodon
		
	Add check for missing tag param in streaming API (#8955)
* Add check for missing tag param in streaming API Fixes error: ``` TypeError: Cannot read property 'toLowerCase' of undefined at app.get (.../streaming/index.js:493:50) ``` * Fix code style issues
This commit is contained in:
		
							parent
							
								
									e6c01171de
								
							
						
					
					
						commit
						18e7ef6eda
					
				
					 1 changed files with 32 additions and 4 deletions
				
			
		| 
						 | 
					@ -449,6 +449,11 @@ const startWorker = (workerId) => {
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const httpNotFound = res => {
 | 
				
			||||||
 | 
					    res.writeHead(404, { 'Content-Type': 'application/json' });
 | 
				
			||||||
 | 
					    res.end(JSON.stringify({ error: 'Not found' }));
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  app.use(setRequestId);
 | 
					  app.use(setRequestId);
 | 
				
			||||||
  app.use(setRemoteAddress);
 | 
					  app.use(setRemoteAddress);
 | 
				
			||||||
  app.use(allowCrossDomain);
 | 
					  app.use(allowCrossDomain);
 | 
				
			||||||
| 
						 | 
					@ -490,11 +495,25 @@ const startWorker = (workerId) => {
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  app.get('/api/v1/streaming/hashtag', (req, res) => {
 | 
					  app.get('/api/v1/streaming/hashtag', (req, res) => {
 | 
				
			||||||
    streamFrom(`timeline:hashtag:${req.query.tag.toLowerCase()}`, req, streamToHttp(req, res), streamHttpEnd(req), true);
 | 
					    const { tag } = req.query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!tag || tag.length === 0) {
 | 
				
			||||||
 | 
					      httpNotFound(res);
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    streamFrom(`timeline:hashtag:${tag.toLowerCase()}`, req, streamToHttp(req, res), streamHttpEnd(req), true);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  app.get('/api/v1/streaming/hashtag/local', (req, res) => {
 | 
					  app.get('/api/v1/streaming/hashtag/local', (req, res) => {
 | 
				
			||||||
    streamFrom(`timeline:hashtag:${req.query.tag.toLowerCase()}:local`, req, streamToHttp(req, res), streamHttpEnd(req), true);
 | 
					    const { tag } = req.query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!tag || tag.length === 0) {
 | 
				
			||||||
 | 
					      httpNotFound(res);
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    streamFrom(`timeline:hashtag:${tag.toLowerCase()}:local`, req, streamToHttp(req, res), streamHttpEnd(req), true);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  app.get('/api/v1/streaming/list', (req, res) => {
 | 
					  app.get('/api/v1/streaming/list', (req, res) => {
 | 
				
			||||||
| 
						 | 
					@ -502,8 +521,7 @@ const startWorker = (workerId) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    authorizeListAccess(listId, req, authorized => {
 | 
					    authorizeListAccess(listId, req, authorized => {
 | 
				
			||||||
      if (!authorized) {
 | 
					      if (!authorized) {
 | 
				
			||||||
        res.writeHead(404, { 'Content-Type': 'application/json' });
 | 
					        httpNotFound(res);
 | 
				
			||||||
        res.end(JSON.stringify({ error: 'Not found' }));
 | 
					 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -553,9 +571,19 @@ const startWorker = (workerId) => {
 | 
				
			||||||
      streamFrom(channel, req, streamToWs(req, ws), streamWsEnd(req, ws, subscriptionHeartbeat(channel)), true);
 | 
					      streamFrom(channel, req, streamToWs(req, ws), streamWsEnd(req, ws, subscriptionHeartbeat(channel)), true);
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case 'hashtag':
 | 
					    case 'hashtag':
 | 
				
			||||||
 | 
					      if (!location.query.tag || location.query.tag.length === 0) {
 | 
				
			||||||
 | 
					        ws.close();
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      streamFrom(`timeline:hashtag:${location.query.tag.toLowerCase()}`, req, streamToWs(req, ws), streamWsEnd(req, ws), true);
 | 
					      streamFrom(`timeline:hashtag:${location.query.tag.toLowerCase()}`, req, streamToWs(req, ws), streamWsEnd(req, ws), true);
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case 'hashtag:local':
 | 
					    case 'hashtag:local':
 | 
				
			||||||
 | 
					      if (!location.query.tag || location.query.tag.length === 0) {
 | 
				
			||||||
 | 
					        ws.close();
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      streamFrom(`timeline:hashtag:${location.query.tag.toLowerCase()}:local`, req, streamToWs(req, ws), streamWsEnd(req, ws), true);
 | 
					      streamFrom(`timeline:hashtag:${location.query.tag.toLowerCase()}:local`, req, streamToWs(req, ws), streamWsEnd(req, ws), true);
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case 'list':
 | 
					    case 'list':
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue