From aad954666c7a64637e3a9a6219a0f75946d53785 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Tue, 10 Jan 2017 21:05:40 +0100 Subject: [PATCH 01/15] Create Traffic.php --- lib/Github/Api/Repository/Traffic.php | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lib/Github/Api/Repository/Traffic.php diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php new file mode 100644 index 00000000000..efe1700693d --- /dev/null +++ b/lib/Github/Api/Repository/Traffic.php @@ -0,0 +1,47 @@ + + */ +class Traffic extends AbstractApi +{ + /** + * @link https://developer.github.com/v3/repos/traffic/#list-referrers + * + * @param string $owner + * @param string $repository + * + * @return array + */ + public function list($owner, $repository) + { + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/popular/referrers'); + } + /** + * @link https://developer.github.com/v3/repos/traffic/#list-paths + * + * @param string $owner + * @param string $repository + * + * @return array + */ + public function paths($owner, $repository) + { + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/popular/paths'); + } + /** + * @link https://developer.github.com/v3/repos/traffic/#views + * + * @param string $owner + * @param string $repository + * + * @return array + */ + public function views($owner, $repository) + { + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views'); + } +} From f05e6268907f51852d6d3ea1d06202392a74cdf7 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Tue, 10 Jan 2017 21:06:33 +0100 Subject: [PATCH 02/15] Add Clones --- lib/Github/Api/Repository/Traffic.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php index efe1700693d..42984925507 100644 --- a/lib/Github/Api/Repository/Traffic.php +++ b/lib/Github/Api/Repository/Traffic.php @@ -44,4 +44,16 @@ public function views($owner, $repository) { return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views'); } + /** + * @link https://developer.github.com/v3/repos/traffic/#clones + * + * @param string $owner + * @param string $repository + * + * @return array + */ + public function clones($owner, $repository) + { + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/clones'); + } } From a229d8a4cc4d2f7621f201f18d855390fa4f8862 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Tue, 10 Jan 2017 20:07:39 +0000 Subject: [PATCH 03/15] Apply fixes from StyleCI [ci skip] [skip ci] --- lib/Github/Api/Repository/Traffic.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php index 42984925507..299cb289880 100644 --- a/lib/Github/Api/Repository/Traffic.php +++ b/lib/Github/Api/Repository/Traffic.php @@ -1,7 +1,9 @@ @@ -42,7 +44,7 @@ public function paths($owner, $repository) */ public function views($owner, $repository) { - return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views'); + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views'); } /** * @link https://developer.github.com/v3/repos/traffic/#clones @@ -54,6 +56,6 @@ public function views($owner, $repository) */ public function clones($owner, $repository) { - return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/clones'); + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/clones'); } } From 350b8289b515f4b59681cd546f9986ae64ef8579 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Wed, 11 Jan 2017 17:05:14 +0100 Subject: [PATCH 04/15] Add Traffic to Repo --- lib/Github/Api/Repo.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Github/Api/Repo.php b/lib/Github/Api/Repo.php index 0285f44886a..864dbd42e92 100644 --- a/lib/Github/Api/Repo.php +++ b/lib/Github/Api/Repo.php @@ -15,6 +15,7 @@ use Github\Api\Repository\Labels; use Github\Api\Repository\Stargazers; use Github\Api\Repository\Statuses; +use Github\Api\Repository\Traffic; /** * Searching repositories, getting repository information From d6767ea4cc074228b784e1b827b7543fb76db684 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Wed, 11 Jan 2017 17:11:08 +0100 Subject: [PATCH 05/15] Add Traffic --- lib/Github/Api/Repo.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Github/Api/Repo.php b/lib/Github/Api/Repo.php index 864dbd42e92..dac285afb64 100644 --- a/lib/Github/Api/Repo.php +++ b/lib/Github/Api/Repo.php @@ -550,4 +550,9 @@ public function projects() { return new Projects($this->client); } + + public function traffic() + { + return new Traffic($this->client); + } } From ded9d0434f5780f47aee6e60e9675883af4cb110 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Wed, 11 Jan 2017 16:11:15 +0000 Subject: [PATCH 06/15] Apply fixes from StyleCI [ci skip] [skip ci] --- lib/Github/Api/Repo.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Github/Api/Repo.php b/lib/Github/Api/Repo.php index dac285afb64..2279340535c 100644 --- a/lib/Github/Api/Repo.php +++ b/lib/Github/Api/Repo.php @@ -551,8 +551,8 @@ public function projects() return new Projects($this->client); } - public function traffic() - { - return new Traffic($this->client); - } + public function traffic() + { + return new Traffic($this->client); + } } From 8264b329e9437f068994425db67452a7f8cd004d Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Wed, 11 Jan 2017 19:54:57 +0100 Subject: [PATCH 07/15] list() -> referers() --- lib/Github/Api/Repository/Traffic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php index 299cb289880..76c89da2a66 100644 --- a/lib/Github/Api/Repository/Traffic.php +++ b/lib/Github/Api/Repository/Traffic.php @@ -18,7 +18,7 @@ class Traffic extends AbstractApi * * @return array */ - public function list($owner, $repository) + public function referers($owner, $repository) { return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/popular/referrers'); } From bf17eab89c4878e685681d6b3cd8f8b7f2de4aa0 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Thu, 12 Jan 2017 16:10:34 +0100 Subject: [PATCH 08/15] Test skeleton --- .../Tests/Api/Repository/TrafficTest.php | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 test/Github/Tests/Api/Repository/TrafficTest.php diff --git a/test/Github/Tests/Api/Repository/TrafficTest.php b/test/Github/Tests/Api/Repository/TrafficTest.php new file mode 100644 index 00000000000..27cd3f4a390 --- /dev/null +++ b/test/Github/Tests/Api/Repository/TrafficTest.php @@ -0,0 +1,37 @@ +getApiMock(); + + $api->expects($this->once()) // Expect one call + ->method('get') // A GET request + ->with('/gists/123/comments/456') // URI should be "/gists/123/comments/456" + ->will($this->returnValue($expectedValue)); // Should return the "Server response" + + // Call Comments::show + $result = $api->show(123, 456); + + // Verify that the result is the "Server response" as we expect. + $this->assertEquals($expectedValue, $result); + } + + protected function getApiClass() + { + // Tell the "getAPIMock" what class to mock. + return \Github\Api\Gist\Comments::class; + } +} From 73f9828c9de7020da508a3942dfd6b65add2abaa Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Thu, 12 Jan 2017 15:10:40 +0000 Subject: [PATCH 09/15] Apply fixes from StyleCI [ci skip] [skip ci] --- test/Github/Tests/Api/Repository/TrafficTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Github/Tests/Api/Repository/TrafficTest.php b/test/Github/Tests/Api/Repository/TrafficTest.php index 27cd3f4a390..e3ad192dc14 100644 --- a/test/Github/Tests/Api/Repository/TrafficTest.php +++ b/test/Github/Tests/Api/Repository/TrafficTest.php @@ -25,13 +25,13 @@ public function shoulddoSomething() // Call Comments::show $result = $api->show(123, 456); - // Verify that the result is the "Server response" as we expect. + // Verify that the result is the "Server response" as we expect. $this->assertEquals($expectedValue, $result); } protected function getApiClass() { - // Tell the "getAPIMock" what class to mock. + // Tell the "getAPIMock" what class to mock. return \Github\Api\Gist\Comments::class; } } From 51d5ea12b0f140c04671c12307789a8d0b8cf98f Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Wed, 1 Feb 2017 18:08:25 +0100 Subject: [PATCH 10/15] Add per --- lib/Github/Api/Repository/Traffic.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php index 76c89da2a66..9d4ca2ec29c 100644 --- a/lib/Github/Api/Repository/Traffic.php +++ b/lib/Github/Api/Repository/Traffic.php @@ -39,12 +39,13 @@ public function paths($owner, $repository) * * @param string $owner * @param string $repository + * @param string|day $per * * @return array */ - public function views($owner, $repository) + public function views($owner, $repository, $per = 'day') { - return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views'); + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views?per='.rawurlencode($per); } /** * @link https://developer.github.com/v3/repos/traffic/#clones From 079e7f9c03bbec0dd1ada455957fd200d335420a Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Wed, 1 Feb 2017 18:48:57 +0100 Subject: [PATCH 11/15] Remove // --- test/Github/Tests/Api/Repository/TrafficTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/test/Github/Tests/Api/Repository/TrafficTest.php b/test/Github/Tests/Api/Repository/TrafficTest.php index e3ad192dc14..3a181ca286b 100644 --- a/test/Github/Tests/Api/Repository/TrafficTest.php +++ b/test/Github/Tests/Api/Repository/TrafficTest.php @@ -4,7 +4,6 @@ class TrafficTest extends TestCase { - // ... /** * @test From b2ec15854401fddea2c07d5858d41a5dfe55e349 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Wed, 1 Feb 2017 19:23:27 +0100 Subject: [PATCH 12/15] Fix Syntax Error --- lib/Github/Api/Repository/Traffic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php index 9d4ca2ec29c..e27ec33a809 100644 --- a/lib/Github/Api/Repository/Traffic.php +++ b/lib/Github/Api/Repository/Traffic.php @@ -45,7 +45,7 @@ public function paths($owner, $repository) */ public function views($owner, $repository, $per = 'day') { - return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views?per='.rawurlencode($per); + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/views?per='.rawurlencode($per)); } /** * @link https://developer.github.com/v3/repos/traffic/#clones From d87727452b73f8728ba04c756f978f38dbfef2ab Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Sun, 26 Mar 2017 13:49:52 +0200 Subject: [PATCH 13/15] Add --- lib/Github/Api/Repository/Traffic.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php index e27ec33a809..c3ccd57318b 100644 --- a/lib/Github/Api/Repository/Traffic.php +++ b/lib/Github/Api/Repository/Traffic.php @@ -52,11 +52,12 @@ public function views($owner, $repository, $per = 'day') * * @param string $owner * @param string $repository + * @param string|day $per * * @return array */ - public function clones($owner, $repository) + public function clones($owner, $repository, $per = 'day') { - return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/clones'); + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/clones?per='.rawurlencode($per)'); } } From 030c76e304126ff8bbeb1cc597f8b7c0e4ade382 Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Sun, 26 Mar 2017 13:52:29 +0200 Subject: [PATCH 14/15] Syntax --- lib/Github/Api/Repository/Traffic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Github/Api/Repository/Traffic.php b/lib/Github/Api/Repository/Traffic.php index c3ccd57318b..1e7d85bf5ce 100644 --- a/lib/Github/Api/Repository/Traffic.php +++ b/lib/Github/Api/Repository/Traffic.php @@ -58,6 +58,6 @@ public function views($owner, $repository, $per = 'day') */ public function clones($owner, $repository, $per = 'day') { - return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/clones?per='.rawurlencode($per)'); + return $this->get('/repos/'.rawurlencode($owner).'/'.rawurlencode($repository).'/traffic/clones?per='.rawurlencode($per)); } } From 4c098a80de67246a04102a7cb4c13ab53b415bbc Mon Sep 17 00:00:00 2001 From: Miguel Piedrafita Date: Sun, 26 Mar 2017 14:18:39 +0200 Subject: [PATCH 15/15] Add Tests --- .../Tests/Api/Repository/TrafficTest.php | 69 +++++++++++++++---- 1 file changed, 56 insertions(+), 13 deletions(-) diff --git a/test/Github/Tests/Api/Repository/TrafficTest.php b/test/Github/Tests/Api/Repository/TrafficTest.php index 3a181ca286b..5110c546240 100644 --- a/test/Github/Tests/Api/Repository/TrafficTest.php +++ b/test/Github/Tests/Api/Repository/TrafficTest.php @@ -8,29 +8,72 @@ class TrafficTest extends TestCase /** * @test */ - public function shoulddoSomething() + public function shouldgetReferers() { - // Create a variable with the "Server response". - $expectedValue = array('comment1'); + $expectedValue = json_encode(["referrer" => "github.com","count" => 112,"uniques" => 15]); - // Get the API mock (see "getApiClass" below). $api = $this->getApiMock(); - $api->expects($this->once()) // Expect one call - ->method('get') // A GET request - ->with('/gists/123/comments/456') // URI should be "/gists/123/comments/456" - ->will($this->returnValue($expectedValue)); // Should return the "Server response" + $api->expects($this->once()) + ->method('get') + ->with('/repos/knplabs/php-github-api/traffic/popular/referrers') + ->will($this->returnValue($expectedValue)); - // Call Comments::show - $result = $api->show(123, 456); + $result = $api->referers('knplabs', 'php-github-api'); + + $this->assertEquals($expectedValue, $result); + } + + public function shouldgetPaths() + { + $expectedValue = json_encode(["path" => "/knplabs/php-github-api","title" => "KnpLabs/php-github-api: A simple PHP GitHub API client, Object Oriented, tested and documented. For 5.5+.","count" => 203,"uniques" => 54]); + + $api = $this->getApiMock(); + + $api->expects($this->once()) + ->method('get') + ->with('/repos/knplabs/php-github-api/traffic/popular/paths') + ->will($this->returnValue($expectedValue)); + + $result = $api->paths('knplabs', 'php-github-api'); + + $this->assertEquals($expectedValue, $result); + } + + public function shouldgetViews() + { + $expectedValue = json_encode(["count" => 813,"uniques" => 61,"views" => [["timestamp" => "2017-03-12T00:00:00Z","count" => 40,"uniques" => 3]]]); + + $api = $this->getApiMock(); + + $api->expects($this->once()) + ->method('get') + ->with('/repos/knplabs/php-github-api/traffic/views?per=day') + ->will($this->returnValue($expectedValue)); + + $result = $api->views('knplabs', 'php-github-api'); + + $this->assertEquals($expectedValue, $result); + } + + public function shouldgetClones() + { + $expectedValue = json_encode(["count" => 813,"uniques" => 61,"clones" => [["timestamp" => "2017-03-12T00:00:00Z","count" => 14,"uniques" => 8]]]); + + $api = $this->getApiMock(); + + $api->expects($this->once()) + ->method('get') + ->with('/repos/knplabs/php-github-api/traffic/clones?per=day') + ->will($this->returnValue($expectedValue)); + + $result = $api->clones('knplabs', 'php-github-api'); - // Verify that the result is the "Server response" as we expect. $this->assertEquals($expectedValue, $result); } protected function getApiClass() { - // Tell the "getAPIMock" what class to mock. - return \Github\Api\Gist\Comments::class; + return \Github\Api\Repository\Traffic::class; } }