Github
https://github.com/f13dev/wp-github-oembed
Git clone:
git clone https://github.com/f13dev/wp-github-oembed
Introduction
As a user of Github who is maintaining a website about software development (this one), I quite like the wp-github-oembed plugin by leewillis77. Although a very good contribution, I felt that it was missing an important piece of information regarding Github repositories; no information is provided about releases.
Code modifications
In order to add release information two additional methods were required within the github_api class, first of all one to retrieve releases. If no releases exist for the repository null is returned, otherwise an array of release information is returned.
/** * Get release information for repository, used to determine if any releases exist * @param string $owner The repository's owner * @param string $repository The respository name * @return object The response from the GitHub API */ public function get_repo_releases( $owner, $repository ) { $this->log( "get_repo_releases( $owner, $repository )", GEDEBUG_CALL ); $owner = trim( $owner, '/' ); $repo = trim( $repository, '/' ); $results = $this->call_api( "https://api.github.com/repos/$owner/$repo/releases" ); return json_decode( $results['body'] ); }
Secondly, a method within github_api was required to retrieve an array of information about the latest release, this returns two pieces of information used within this contribution: html_url (the URL of the latest release) and tag_name (the releases tag, i.e. v1.0).
/** * Get latest release information for repository. * @param string $owner The repository's owner * @param string $repository The respository name * @return object The response from the GitHub API */ public function get_repo_releases_latest( $owner, $repository ) { $this->log( "get_repo_releases_latest( $owner, $repository )", GEDEBUG_CALL ); $owner = trim( $owner, '/' ); $repo = trim( $repository, '/' ); $results = $this->call_api( "https://api.github.com/repos/$owner/$repository/releases/latest" ); return json_decode( $results['body'] ); }
Finally, in order to utilise these two methods, the following additional code needs to be added to the oembed_github_repo function in github-embed.php.
$releases = $this->api->get_repo_releases ( $owner, $repository ); /* * Show the latest release if one exists, otherwise show Latest release: none. */ if ( $releases == null ) { $response->html .= "Latest release: none<br />"; } else { $latest_release = $this->api->get_repo_releases_latest ( $owner, $repository ); $latest_release_url = $latest_release->html_url; $latest_release_tag = $latest_release->tag_name; $response->html .= 'Latest release: <a href="' . $latest_release_url . '" target="_blank">' . $latest_release_tag . '</a><br />'; }
Now when repository information is requested, the response will include a link to the latest release, if one exists; otherwise “Latest release: none” will be displayed
No comments on WP Github Embed, adding release information