diff --git a/controllers/push.php b/controllers/push.php index d8eb21c..e743a20 100644 --- a/controllers/push.php +++ b/controllers/push.php @@ -6,6 +6,13 @@ function push_error(&$app, $msg) { die(); } +function push_param($params, $name) { + // Look 'mode' first, fall back to 'hub_mode' + if(k($params, $name)) + return k($params, $name); + return k($params, 'hub_'.$name); +} + /////////////////////////////////////////////////////////////// // These are just test routes $app->get('/callback-success', function() use($app) { @@ -40,13 +47,21 @@ function verify_push_topic_url($topic, &$app) { $app->post('/', function() use($app) { $params = $app->request()->params(); - switch($mode=k($params, 'hub_mode')) { + switch($mode=push_param($params, 'mode')) { case 'subscribe': case 'unsubscribe': // Sanity check the request params - $topic = k($params, 'hub_topic'); - $callback = k($params, 'hub_callback'); + $topic = push_param($params, 'topic'); + $callback = push_param($params, 'callback'); + + if(!$topic) { + push_error($app, 'No topic URL was specified. Send the topic URL in a parameter named "topic"'); + } + + if(!$callback) { + push_error($app, 'No callback URL was specified. Send the callback URL in a parameter named "callback"'); + } if(!is_valid_push_url($topic)) { push_error($app, 'Topic URL was invalid ('.$topic.')'); @@ -101,12 +116,14 @@ $app->post('/', function() use($app) { case 'publish': // Sanity check the request params - $url = k($params, 'hub_url'); - if(!$url) - $url = k($params, 'hub_topic'); + $url = push_param($params, 'url'); + // Allow publishers to use either "url" or "topic" to indicate the URL that changed + if(!$url) { + $url = push_param($params, 'topic'); + } if(!$url) { - push_error($app, 'No URL was specified. When publishing, send the topic URL in a parameter named hub.topic'); + push_error($app, 'No URL was specified. When publishing, send the topic URL in a parameter named "url"'); } if(!is_valid_push_url($url)) {