2010-02-21 21:40:59 +00:00
< ? php
/*
* StatusNet - the distributed open - source microblogging tool
* Copyright ( C ) 2010 , StatusNet , Inc .
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
2019-08-07 22:47:17 +01:00
defined ( 'GNUSOCIAL' ) || die ();
2010-10-08 18:42:59 +01:00
2010-02-21 21:40:59 +00:00
/**
2017-05-01 10:04:27 +01:00
* Process a feed distribution POST from a WebSub ( previously PuSH ) hub .
2010-02-21 21:40:59 +00:00
* @ package FeedSub
* @ author Brion Vibber < brion @ status . net >
*/
2010-02-24 20:36:36 +00:00
class PushInQueueHandler extends QueueHandler
2010-02-21 21:40:59 +00:00
{
function transport ()
{
2010-02-24 20:36:36 +00:00
return 'pushin' ;
2010-02-21 21:40:59 +00:00
}
2019-08-09 00:15:38 +01:00
function handle ( $data ) : bool
2010-02-21 21:40:59 +00:00
{
2019-08-07 22:47:17 +01:00
if ( ! is_array ( $data )) {
common_log ( LOG_ERR , " Got bogus data, not processing " );
return true ;
}
2010-02-21 21:40:59 +00:00
$feedsub_id = $data [ 'feedsub_id' ];
$post = $data [ 'post' ];
$hmac = $data [ 'hmac' ];
2017-04-25 19:42:10 +01:00
try {
$feedsub = FeedSub :: getByID ( $feedsub_id );
$feedsub -> receive ( $post , $hmac );
} catch ( NoResultException $e ) {
common_log ( LOG_INFO , " Discarding POST to unknown feed subscription id { $feedsub_id } " );
} catch ( Exception $e ) {
2017-06-22 13:37:32 +01:00
if ( is_null ( $feedsub )) {
common_log ( LOG_ERR , " Exception " . _ve ( get_class ( $e )) . " during WebSub push input processing where FeedSub->receive returned null! " . _ve ( $e -> getMessage ()));
} else {
common_log ( LOG_ERR , " Exception " . _ve ( get_class ( $e )) . " during WebSub push input processing for { $feedsub -> getUri () } : " . _ve ( $e -> getMessage ()));
}
2010-02-21 21:40:59 +00:00
}
return true ;
}
}