'unsupported_url', 'error_description' => 'This GitHub URL is not supported', 'error_code' => 400, ]; } $headers = []; if(isset($creds['github_access_token'])) { $headers[] = 'Authorization: Bearer ' . $creds['github_access_token']; } $response = $http->get($parts['apiurl'], $headers); if($response['code'] != 200) { return [ 'error' => 'github_error', 'error_description' => $response['body'], 'code' => $response['code'], ]; } return [ 'url' => $url, 'body' => $response['body'], 'code' => $response['code'], ]; } public static function parse($json, $url) { $data = @json_decode($json, true); if(!$data) return self::_unknown(); $parts = self::extract_url_parts($url); if(!$parts) return self::_unknown(); // Start building the h-entry $entry = array( 'type' => ($parts['type'] == 'repo' ? 'repo' : 'entry'), 'url' => $url, 'author' => [ 'type' => 'card', 'name' => null, 'photo' => null, 'url' => null ] ); if($parts['type'] == 'repo') $authorkey = 'owner'; else $authorkey = 'user'; $entry['author']['name'] = $data[$authorkey]['login']; $entry['author']['photo'] = $data[$authorkey]['avatar_url']; $entry['author']['url'] = $data[$authorkey]['html_url']; if($parts['type'] == 'pull') { $entry['name'] = '#' . $parts['pull'] . ' ' . $data['title']; } elseif($parts['type'] == 'issue') { $entry['name'] = '#' . $parts['issue'] . ' ' . $data['title']; } elseif($parts['type'] == 'repo') { $entry['name'] = $data['name']; } if($parts['type'] == 'repo') { if(!empty($data['description'])) $entry['summary'] = $data['description']; } if($parts['type'] != 'repo' && !empty($data['body'])) { $parser = new GithubMarkdown(); $entry['content'] = [ 'text' => $data['body'], 'html' => $parser->parse($data['body']) ]; } if($parts['type'] == 'comment') { $entry['in-reply-to'] = ['https://github.com/'.$parts['org'].'/'.$parts['repo'].'/issues/'.$parts['issue']]; } if(!empty($data['labels'])) { $entry['category'] = array_map(function($l){ return $l['name']; }, $data['labels']); } $entry['published'] = $data['created_at']; return [ 'data' => $entry, 'original' => $json ]; } }