@ -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 ( setRemoteAddress ) ;
app . use ( allowCrossDomain ) ;
@ -490,11 +495,25 @@ const startWorker = (workerId) => {
} ) ;
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 ) => {
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 ) => {
@ -502,8 +521,7 @@ const startWorker = (workerId) => {
authorizeListAccess ( listId , req , authorized => {
if ( ! authorized ) {
res . writeHead ( 404 , { 'Content-Type' : 'application/json' } ) ;
res . end ( JSON . stringify ( { error : 'Not found' } ) ) ;
httpNotFound ( res ) ;
return ;
}
@ -553,9 +571,19 @@ const startWorker = (workerId) => {
streamFrom ( channel , req , streamToWs ( req , ws ) , streamWsEnd ( req , ws , subscriptionHeartbeat ( channel ) ) , true ) ;
break ;
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 ) ;
break ;
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 ) ;
break ;
case 'list' :