function tumblr_check_item_notification(array &$notification_data)
{
- if (!tumblr_enabled_for_user($notification_data['uid'])) {
+ if (!tumblr_enabled_for_user($notification_data['uid'])) {
return;
}
}
$hookData['result'] = tumblr_get_contact_by_url($hookData['uri']);
+
+ // Authoritative probe should set the result even if the probe was unsuccessful
+ if ($hookData['network'] == Protocol::TUMBLR && empty($hookData['result'])) {
+ $hookData['result'] = [];
+ }
}
function tumblr_item_by_link(array &$hookData)
if (!preg_match('#^https?://www\.tumblr.com/blog/view/(.+)/(\d+).*#', $hookData['uri'], $matches) && !preg_match('#^https?://www\.tumblr.com/(.+)/(\d+).*#', $hookData['uri'], $matches)) {
return;
}
-
+
Logger::debug('Found tumblr post', ['url' => $hookData['uri'], 'blog' => $matches[1], 'id' => $matches[2]]);
$parameters = ['id' => $matches[2], 'reblog_info' => false, 'notes_info' => false, 'npf' => false];
return $blogs;
}
-function tumblr_enabled_for_user(int $uid)
+function tumblr_enabled_for_user(int $uid)
{
return !empty($uid) && !empty(DI::pConfig()->get($uid, 'tumblr', 'access_token')) &&
!empty(DI::pConfig()->get($uid, 'tumblr', 'refresh_token')) &&
* Get a contact array from a Tumblr url
*
* @param string $url
- * @return array
+ * @return array|null
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
-function tumblr_get_contact_by_url(string $url): array
+function tumblr_get_contact_by_url(string $url): ?array
{
$consumer_key = DI::config()->get('tumblr', 'consumer_key');
if (empty($consumer_key)) {
- return [];
+ return null;
}
if (!preg_match('#^https?://tumblr.com/(.+)#', $url, $matches) && !preg_match('#^https?://www\.tumblr.com/(.+)#', $url, $matches) && !preg_match('#^https?://(.+)\.tumblr.com#', $url, $matches)) {
try {
$curlResult = DI::httpClient()->get($url);
} catch (\Exception $e) {
- return [];
+ return null;
}
$html = $curlResult->getBody();
if (empty($html)) {
- return [];
+ return null;
}
$doc = new DOMDocument();
@$doc->loadHTML($html);
}
if (empty($blog)) {
- return [];
+ return null;
}
Logger::debug('Update Tumblr blog data', ['url' => $url]);
$body = $curlResult->getBody();
$data = json_decode($body);
if (empty($data)) {
- return [];
+ return null;
}
$baseurl = 'https://tumblr.com';
Logger::info('Error fetching token', ['uid' => $uid, 'code' => $code, 'result' => $curlResult->getBody(), 'parameters' => $parameters]);
return '';
}
-
+
$result = json_decode($curlResult->getBody());
if (empty($result)) {
Logger::info('Invalid result when updating token', ['uid' => $uid]);
return '';
}
-
+
$expires_at = time() + $result->expires_in;
Logger::debug('Renewed token', ['uid' => $uid, 'expires_at' => date('c', $expires_at)]);
}