Skip to content

Commit e389d73

Browse files
authored
Merge pull request #82 from packagist/suborganization-rename
Add suborganization API and deprecated subrepository API
2 parents 2f24c2a + da7a9df commit e389d73

17 files changed

+1033
-142
lines changed

README.md

Lines changed: 126 additions & 125 deletions
Large diffs are not rendered by default.

src/Api/Projects.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace PrivatePackagist\ApiClient\Api;
1111

1212
/**
13-
* @deprecated Use the Subrepositories API instead
13+
* @deprecated Use the Suborganizations API instead
1414
*/
1515
class Projects extends Subrepositories
1616
{

src/Api/Projects/MirroredRepositories.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace PrivatePackagist\ApiClient\Api\Projects;
1111

1212
/**
13-
* @deprecated Use Subrepositories\MirroredRepositories instead
13+
* @deprecated Use \PrivatePackagist\ApiClient\Api\Suborganizations\MirroredRepositories instead
1414
*/
1515
class MirroredRepositories extends \PrivatePackagist\ApiClient\Api\Subrepositories\MirroredRepositories
1616
{

src/Api/Projects/Packages.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace PrivatePackagist\ApiClient\Api\Projects;
1111

1212
/**
13-
* @deprecated Use Subrepositories\Packages instead
13+
* @deprecated Use \PrivatePackagist\ApiClient\Api\Suborganizations\Packages instead
1414
*/
1515
class Packages extends \PrivatePackagist\ApiClient\Api\Subrepositories\Packages
1616
{

src/Api/Suborganizations.php

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?php
2+
3+
/**
4+
* (c) Packagist Conductors GmbH <[email protected]>
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
namespace PrivatePackagist\ApiClient\Api;
11+
12+
use PrivatePackagist\ApiClient\Exception\InvalidArgumentException;
13+
14+
class Suborganizations extends AbstractApi
15+
{
16+
public function all()
17+
{
18+
return $this->get('/suborganizations/');
19+
}
20+
21+
public function show($suborganizationName)
22+
{
23+
return $this->get(sprintf('/suborganizations/%s/', $suborganizationName));
24+
}
25+
26+
public function create($name)
27+
{
28+
return $this->post('/suborganizations/', ['name' => $name]);
29+
}
30+
31+
public function remove($suborganizationName)
32+
{
33+
return $this->delete(sprintf('/suborganizations/%s/', $suborganizationName));
34+
}
35+
36+
public function listTeams($suborganizationName)
37+
{
38+
return $this->get(sprintf('/suborganizations/%s/teams/', $suborganizationName));
39+
}
40+
41+
public function addOrEditTeams($suborganizationName, array $teams)
42+
{
43+
foreach ($teams as $team) {
44+
if (!isset($team['id'])) {
45+
throw new InvalidArgumentException('Parameter "id" is required.');
46+
}
47+
48+
if (!isset($team['permission'])) {
49+
throw new InvalidArgumentException('Parameter "permission" is required.');
50+
}
51+
}
52+
53+
return $this->post(sprintf('/suborganizations/%s/teams/', $suborganizationName), $teams);
54+
}
55+
56+
public function removeTeam($suborganizationName, $teamId)
57+
{
58+
return $this->delete(sprintf('/suborganizations/%s/teams/%s/', $suborganizationName, $teamId));
59+
}
60+
61+
public function listTokens($suborganizationName)
62+
{
63+
return $this->get(sprintf('/suborganizations/%s/tokens/', $suborganizationName));
64+
}
65+
66+
public function createToken($suborganizationName, array $tokenData)
67+
{
68+
return $this->post(sprintf('/suborganizations/%s/tokens/', $suborganizationName), $tokenData);
69+
}
70+
71+
public function removeToken($suborganizationName, $tokenId)
72+
{
73+
return $this->delete(sprintf('/suborganizations/%s/tokens/%s/', $suborganizationName, $tokenId));
74+
}
75+
76+
public function regenerateToken($suborganizationName, $tokenId, array $confirmation)
77+
{
78+
if (!isset($confirmation['IConfirmOldTokenWillStopWorkingImmediately'])) {
79+
throw new InvalidArgumentException('Confirmation is required to regenerate the Composer repository token.');
80+
}
81+
82+
return $this->post(sprintf('/suborganizations/%s/tokens/%s/regenerate', $suborganizationName, $tokenId), $confirmation);
83+
}
84+
85+
public function packages()
86+
{
87+
return new Suborganizations\Packages($this->client);
88+
}
89+
90+
public function mirroredRepositories()
91+
{
92+
return new Suborganizations\MirroredRepositories($this->client);
93+
}
94+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
/**
4+
* (c) Packagist Conductors GmbH <[email protected]>
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
namespace PrivatePackagist\ApiClient\Api\Suborganizations;
11+
12+
use PrivatePackagist\ApiClient\Api\AbstractApi;
13+
use PrivatePackagist\ApiClient\Exception\InvalidArgumentException;
14+
15+
class MirroredRepositories extends AbstractApi
16+
{
17+
public function all($suborganizationName)
18+
{
19+
return $this->get(sprintf('/suborganizations/%s/mirrored-repositories/', $suborganizationName));
20+
}
21+
22+
public function add($suborganizationName, array $mirroredRepositories)
23+
{
24+
foreach ($mirroredRepositories as $mirroredRepository) {
25+
if (!isset($mirroredRepository['id'], $mirroredRepository['mirroringBehavior'])) {
26+
throw new InvalidArgumentException('The "id" and the "mirroringBehavior" are required to add a mirrored repository to a project');
27+
}
28+
}
29+
30+
return $this->post(sprintf('/suborganizations/%s/mirrored-repositories/', $suborganizationName), $mirroredRepositories);
31+
}
32+
33+
public function show($suborganizationName, $mirroredRepositoryId)
34+
{
35+
return $this->get(sprintf('/suborganizations/%s/mirrored-repositories/%s/', $suborganizationName, $mirroredRepositoryId));
36+
}
37+
38+
public function edit($suborganizationName, $mirroredRepositoryId, $mirroringBehavior)
39+
{
40+
return $this->put(sprintf('/suborganizations/%s/mirrored-repositories/%s/', $suborganizationName, $mirroredRepositoryId), [
41+
'mirroringBehavior' => $mirroringBehavior,
42+
]);
43+
}
44+
45+
public function remove($suborganizationName, $mirroredRepositoryId)
46+
{
47+
return $this->delete(sprintf('/suborganizations/%s/mirrored-repositories/%s/', $suborganizationName, $mirroredRepositoryId));
48+
}
49+
50+
public function listPackages($suborganizationName, $mirroredRepositoryId)
51+
{
52+
return $this->get(sprintf('/suborganizations/%s/mirrored-repositories/%s/packages/', $suborganizationName, $mirroredRepositoryId));
53+
}
54+
55+
public function addPackages($suborganizationName, $mirroredRepositoryId, array $packages)
56+
{
57+
return $this->post(sprintf('/suborganizations/%s/mirrored-repositories/%s/packages/', $suborganizationName, $mirroredRepositoryId), $packages);
58+
}
59+
60+
public function removePackages($suborganizationName, $mirroredRepositoryId)
61+
{
62+
return $this->delete(sprintf('/suborganizations/%s/mirrored-repositories/%s/packages/', $suborganizationName, $mirroredRepositoryId));
63+
}
64+
}

src/Api/Suborganizations/Packages.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
/**
4+
* (c) Packagist Conductors GmbH <[email protected]>
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
namespace PrivatePackagist\ApiClient\Api\Suborganizations;
11+
12+
use PrivatePackagist\ApiClient\Api\AbstractApi;
13+
use PrivatePackagist\ApiClient\Exception\InvalidArgumentException;
14+
use PrivatePackagist\ApiClient\Payload\CustomPackageConfig;
15+
use PrivatePackagist\ApiClient\Payload\VcsPackageConfig;
16+
17+
class Packages extends AbstractApi
18+
{
19+
public function all($suborganizationName, array $filters = [])
20+
{
21+
if (isset($filters['origin']) && !in_array($filters['origin'], \PrivatePackagist\ApiClient\Api\Packages::AVAILABLE_ORIGINS, true)) {
22+
throw new InvalidArgumentException('Filter "origin" has to be one of: "' . implode('", "', \PrivatePackagist\ApiClient\Api\Packages::AVAILABLE_ORIGINS) . '".');
23+
}
24+
25+
return $this->get(sprintf('/suborganizations/%s/packages/', $suborganizationName), $filters);
26+
}
27+
28+
public function show($suborganizationName, $packageIdOrName)
29+
{
30+
return $this->get(sprintf('/suborganizations/%s/packages/%s', $suborganizationName, $packageIdOrName));
31+
}
32+
33+
public function createVcsPackage($suborganizationName, $url, $credentialId = null, $type = 'vcs', $defaultSuborganizationAccess = null)
34+
{
35+
$data = new VcsPackageConfig($url, $credentialId, $type, $defaultSuborganizationAccess);
36+
37+
return $this->post(sprintf('/suborganizations/%s/packages/', $suborganizationName), $data->toParameters());
38+
}
39+
40+
public function createCustomPackage($suborganizationName, $customJson, $credentialId = null, $defaultSuborganizationAccess = null)
41+
{
42+
$data = new CustomPackageConfig($customJson, $credentialId, $defaultSuborganizationAccess);
43+
44+
return $this->post(sprintf('/suborganizations/%s/packages/', $suborganizationName), $data->toParameters());
45+
}
46+
47+
public function editVcsPackage($suborganizationName, $packageIdOrName, $url, $credentialId = null, $type = 'vcs', $defaultSuborganizationAccess = null)
48+
{
49+
$data = new VcsPackageConfig($url, $credentialId, $type, $defaultSuborganizationAccess);
50+
51+
return $this->put(sprintf('/suborganizations/%s/packages/%s/', $suborganizationName, $packageIdOrName), $data->toParameters());
52+
}
53+
54+
public function editCustomPackage($suborganizationName, $packageIdOrName, $customJson, $credentialId = null, $defaultSuborganizationAccess = null)
55+
{
56+
$data = new CustomPackageConfig($customJson, $credentialId, $defaultSuborganizationAccess);
57+
58+
return $this->put(sprintf('/suborganizations/%s/packages/%s/', $suborganizationName, $packageIdOrName), $data->toParameters());
59+
}
60+
61+
public function remove($suborganizationName, $packageIdOrName)
62+
{
63+
return $this->delete(sprintf('/suborganizations/%s/packages/%s/', $suborganizationName, $packageIdOrName));
64+
}
65+
66+
public function listDependents($suborganizationName, $packageIdOrName)
67+
{
68+
return $this->get(sprintf('/suborganizations/%s/packages/%s/dependents/', $suborganizationName, $packageIdOrName));
69+
}
70+
}

src/Api/Subrepositories.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
use PrivatePackagist\ApiClient\Exception\InvalidArgumentException;
1313

14+
/**
15+
* @deprecated Use the Suborganizations API instead
16+
*/
1417
class Subrepositories extends AbstractApi
1518
{
1619
public function all()

src/Api/Subrepositories/MirroredRepositories.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
use PrivatePackagist\ApiClient\Api\AbstractApi;
1313
use PrivatePackagist\ApiClient\Exception\InvalidArgumentException;
1414

15+
/**
16+
* @deprecated Use \PrivatePackagist\ApiClient\Api\Suborganizations\MirroredRepositories instead
17+
*/
1518
class MirroredRepositories extends AbstractApi
1619
{
1720
public function all($subrepositoryName)

src/Api/Subrepositories/Packages.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
use PrivatePackagist\ApiClient\Payload\CustomPackageConfig;
1515
use PrivatePackagist\ApiClient\Payload\VcsPackageConfig;
1616

17+
/**
18+
* @deprecated Use \PrivatePackagist\ApiClient\Api\Suborganizations\Packages instead
19+
*/
1720
class Packages extends AbstractApi
1821
{
1922
public function all($subrepositoryName, array $filters = [])

0 commit comments

Comments
 (0)