diff --git a/github-api.php b/github-api.php new file mode 100644 index 0000000..c7edfc9 --- /dev/null +++ b/github-api.php @@ -0,0 +1,116 @@ + 'WordPress Github oEmbed plugin - https://github.com/leewillis77/wp-github-oembed' ) ); + + if ( is_wp_error( $results ) || + ! isset ( $results['response']['code'] ) || + $results['response']['code'] != '200' ) { + header ( 'HTTP/1.0 404 Not Found' ); + die ( 'Octocat is lost, and afraid' ); + } + + return json_decode ( $results['body'] ); + + } + + + + /** + * Get commit information for a repository from the GitHub API + * @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_commits ( $owner, $repository ) { + + $owner = trim ( $owner, '/' ); + $repository = trim ( $repository, '/' ); + + $results = wp_remote_get( "https://api.github.com/repos/$owner/$repository/commits", $args = array ( + 'user-agent' => 'WordPress Github oEmbed plugin - https://github.com/leewillis77/wp-github-oembed' ) ); + + if ( is_wp_error( $results ) || + ! isset ( $results['response']['code'] ) || + $results['response']['code'] != '200' ) { + header ( 'HTTP/1.0 404 Not Found' ); + die ( 'Octocat is lost, and afraid' ); + } + + return json_decode ( $results['body'] ); + + } + + + + /** + * Get a milestone summary from the GitHub API + * @param string $owner The repository's owner + * @param string $repository The respository name + * @param string $milestone The milestone ID + * @return object The response from the GitHub API + */ + public function get_repo_milestone_summary ( $owner, $repository, $milestone ) { + + $owner = trim ( $owner, '/' ); + $repo = trim ( $repo, '/' ); + + $results = wp_remote_get( "https://api.github.com/repos/$owner/$repository/milestones/$milestone", $args = array ( + 'user-agent' => 'WordPress Github oEmbed plugin - https://github.com/leewillis77/wp-github-oembed' ) ); + + if ( is_wp_error( $results ) || + ! isset ( $results['response']['code'] ) || + $results['response']['code'] != '200' ) { + header ( 'HTTP/1.0 404 Not Found' ); + die ( 'Octocat is lost, and afraid' ); + } + + return json_decode ( $results['body'] ); + + } + + + + /** + * Get a user from the GitHub API + * @param string $user The username + * @return object The response from the GitHub API + */ + public function get_user ( $user ) { + + $user = trim ( $user, '/' ); + $repository = trim ( $repository, '/' ); + + $results = wp_remote_get( "https://api.github.com/users/$user", $args = array ( + 'user-agent' => 'WordPress Github oEmbed plugin - https://github.com/leewillis77/wp-github-oembed' ) ); + + if ( is_wp_error( $results ) || + ! isset ( $results['response']['code'] ) || + $results['response']['code'] != '200' ) { + header ( 'HTTP/1.0 404 Not Found' ); + die ( 'Octocat is lost, and afraid' ); + } + + return json_decode ( $results['body'] ); + + } + +} \ No newline at end of file diff --git a/github-embed.php b/github-embed.php index 66239c1..c4ac382 100644 --- a/github-embed.php +++ b/github-embed.php @@ -35,10 +35,17 @@ class github_embed { + private $api; + + + /** * Constructor. Registers hooks and filters + * @param class $api An instance of the github_api classs */ - public function __construct() { + public function __construct ( $api ) { + + $this->api = $api; add_action ( 'init', array ( $this, 'register_oembed_handler' ) ); add_action ( 'init', array ( $this, 'maybe_handle_oembed' ) ); @@ -277,4 +284,7 @@ class github_embed { } -$github_embed = new github_embed(); \ No newline at end of file +require_once ( 'github-api.php' ); + +$github_api = new github_api(); +$github_embed = new github_embed ( $github_api ); \ No newline at end of file