diff --git a/controllers/push.php b/controllers/push.php index 144b3dc..0ce03e1 100644 --- a/controllers/push.php +++ b/controllers/push.php @@ -75,6 +75,8 @@ $app->post('/', function() use($app) { push_error($app, 'Callback URL was invalid'); } + $namespaced = k($params, 'hub_mode') ? 1 : 0; // set namespaced=1 if they used hub_mode in the request + if($mode == 'subscribe') { verify_push_topic_url($topic, $app); @@ -90,6 +92,7 @@ $app->post('/', function() use($app) { // Always set a new requested date and challenge $subscription->date_requested = db\now(); $subscription->challenge = db\random_hash(); + $subscription->namespaced = $namespaced; db\set_updated($subscription); $subscription->save(); diff --git a/lib/PushTask.php b/lib/PushTask.php index 737222b..c736503 100644 --- a/lib/PushTask.php +++ b/lib/PushTask.php @@ -14,13 +14,19 @@ class PushTask { $exp_ts = time() + $lease_seconds; $exp_date = date('Y-m-d H:i:s', $exp_ts); + if($feed->namespaced) { + $prefix = 'hub.'; + } else { + $prefix = ''; + } + $push_params = [ - 'hub.mode' => ($mode == 'subscribe' ? 'subscribe' : 'unsubscribe'), - 'hub.topic' => $feed->feed_url, - 'hub.challenge' => $subscription->challenge + $prefix.'mode' => ($mode == 'subscribe' ? 'subscribe' : 'unsubscribe'), + $prefix.'topic' => $feed->feed_url, + $prefix.'challenge' => $subscription->challenge ]; if($mode == 'subscribe') { - $push_params['hub.lease_seconds'] = $lease_seconds; + $push_params[$prefix.'lease_seconds'] = $lease_seconds; } $url = parse_url($subscription->callback_url);