diff options
author | Aaron Parecki <aaron@parecki.com> | 2016-04-21 19:34:22 -0700 |
---|---|---|
committer | Aaron Parecki <aaron@parecki.com> | 2016-04-21 19:34:22 -0700 |
commit | 3f61541094fb0c6836a6b3afaea58d7bead9ade9 (patch) | |
tree | 1083c8b0cc77aa4b7ee0015963d386f2a777f12a /lib | |
parent | bd97d362c7702329e453b7c10586900ee06b728e (diff) |
accept new json q=syndicate-to response
closes #36
Diffstat (limited to 'lib')
-rw-r--r-- | lib/helpers.php | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/lib/helpers.php b/lib/helpers.php index a860dc0..f0c226b 100644 --- a/lib/helpers.php +++ b/lib/helpers.php @@ -175,13 +175,14 @@ function micropub_get($endpoint, $params, $access_token) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $endpoint); curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Authorization: Bearer ' . $access_token + 'Authorization: Bearer ' . $access_token, + 'Accept: application/json' )); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = array(); if($response) { - parse_str($response, $data); + $data = json_decode($response, true); } $error = curl_error($ch); return array( @@ -198,35 +199,23 @@ function get_syndication_targets(&$user) { $r = micropub_get($user->micropub_endpoint, array('q'=>'syndicate-to'), $user->micropub_access_token); if($r['data'] && array_key_exists('syndicate-to', $r['data'])) { if(is_array($r['data']['syndicate-to'])) { - $targetURLs = $r['data']['syndicate-to']; - } elseif(is_string($r['data']['syndicate-to'])) { - // support comma separated as a fallback - $targetURLs = preg_split('/, ?/', $r['data']['syndicate-to']); + $data = $r['data']['syndicate-to']; } else { - $targetURLs = array(); + $data = array(); } - foreach($targetURLs as $t) { - // If the syndication target doesn't have a scheme, add http - if(!preg_match('/^http/', $t)) - $t2 = 'http://' . $t; - else - $t2 = $t; - - // Parse the target expecting it to be a URL - $url = parse_url($t2); - - // If there's a host, and the host contains a . then we can assume there's a favicon - // parse_url will parse strings like http://twitter into an array with a host of twitter, which is not resolvable - if($url && array_key_exists('host', $url) && strpos($url['host'], '.') !== false) { - $targets[] = array( - 'target' => $t, - 'favicon' => 'http://' . $url['host'] . '/favicon.ico' - ); + foreach($data as $t) { + if(array_key_exists('service', $t) && array_key_exists('photo', $t['service'])) { + $icon = $t['service']['photo']; } else { + $icon = false; + } + + if(array_key_exists('uid', $t) && array_key_exists('name', $t)) { $targets[] = array( - 'target' => $t, - 'favicon' => false + 'target' => $t['name'], + 'uid' => $t['uid'], + 'favicon' => $icon ); } } |