3
3
namespace Github \Api \Repository ;
4
4
5
5
use Github \Api \AbstractApi ;
6
+ use Github \Exception \MissingArgumentException ;
6
7
7
8
/**
9
+ * @link http://developer.github.com/v3/repos/releases/
8
10
* @author Matthew Simo <[email protected] >
11
+ * @author Evgeniy Guseletov <[email protected] >
9
12
*/
10
13
class Releases extends AbstractApi
11
14
{
@@ -19,25 +22,60 @@ class Releases extends AbstractApi
19
22
*/
20
23
public function all ($ username , $ repository )
21
24
{
22
- return $ this ->get ('repos/ ' .urlencode ($ username ).'/ ' .urlencode ($ repository ).'/releases ' );
25
+ return $ this ->get ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/releases ' );
23
26
}
24
27
25
28
/**
26
29
* Get a release in selected repository
27
30
*
28
31
* @param string $username the user who owns the repo
29
32
* @param string $repository the name of the repo
30
- * @param integer $id the id of the release
33
+ * @param integer $id the id of the release
31
34
*
32
35
* @return array
33
36
*/
34
37
public function show ($ username , $ repository , $ id )
35
38
{
36
- return $ this ->get ('repos/ ' .urlencode ($ username ).'/ ' .urlencode ($ repository ).'/releases/ ' .urlencode ($ id ));
39
+ return $ this ->get ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/releases/ ' .rawurlencode ($ id ));
40
+ }
41
+
42
+ /**
43
+ * Create new release in selected repository
44
+ *
45
+ * @param string $username
46
+ * @param string $repository
47
+ * @param array $params
48
+ *
49
+ * @throws MissingArgumentException
50
+ *
51
+ * @return array
52
+ */
53
+ public function create ($ username , $ repository , array $ params )
54
+ {
55
+ if (!isset ($ params ['tag_name ' ])) {
56
+ throw new MissingArgumentException ('tag_name ' );
57
+ }
58
+
59
+ return $ this ->post ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/releases ' , $ params );
60
+ }
61
+
62
+ /**
63
+ * Edit release in selected repository
64
+ *
65
+ * @param string $username
66
+ * @param string $repository
67
+ * @param integer $id
68
+ * @param array $params
69
+ *
70
+ * @return array
71
+ */
72
+ public function edit ($ username , $ repository , $ id , array $ params )
73
+ {
74
+ return $ this ->patch ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/releases/ ' .rawurlencode ($ id ), $ params );
37
75
}
38
76
39
77
/**
40
- * Delete a download in selected repository (Not thoroughly tested!)
78
+ * Delete a release in selected repository (Not thoroughly tested!)
41
79
*
42
80
* @param string $username the user who owns the repo
43
81
* @param string $repository the name of the repo
@@ -47,6 +85,14 @@ public function show($username, $repository, $id)
47
85
*/
48
86
public function remove ($ username , $ repository , $ id )
49
87
{
50
- return $ this ->delete ('repos/ ' .urlencode ($ username ).'/ ' .urlencode ($ repository ).'/releases/ ' .urlencode ($ id ));
88
+ return $ this ->delete ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/releases/ ' .rawurlencode ($ id ));
89
+ }
90
+
91
+ /**
92
+ * @return Assets
93
+ */
94
+ public function assets ()
95
+ {
96
+ return new Assets ($ this ->client );
51
97
}
52
98
}
0 commit comments