@@ -124,13 +124,14 @@ def status(self):
124
124
class PullRequest (GitHubCore ):
125
125
"""The :class:`PullRequest <PullRequest>` object."""
126
126
def __init__ (self ,pull ,session = None ):
127
- super (PullRequest ,self ).__init__ (session )
127
+ super (PullRequest ,self ).__init__ (pull , session )
128
128
self ._update_ (pull )
129
129
130
130
def __repr__ (self ):
131
131
return '<Pull Request [#%d]>' % self ._num
132
132
133
133
def _update_ (self ,pull ):
134
+ self ._json_data = pull
134
135
self ._api = pull .get ('url' )
135
136
self ._base = PullDestination (pull .get ('base' ),'Base' )
136
137
self ._body = pull .get ('body' )
@@ -175,15 +176,15 @@ def _update_(self, pull):
175
176
self ._mergeable = pull .get ('mergeable' )
176
177
self ._mergedby = None
177
178
if pull .get ('merged_by' ):
178
- self ._mergedby = User (pull .get ('merged_by' ),self . _session )
179
+ self ._mergedby = User (pull .get ('merged_by' ),self )
179
180
self ._num = pull .get ('number' )
180
181
self ._patch_url = pull .get ('patch_url' )
181
182
self ._state = pull .get ('state' )
182
183
self ._title = pull .get ('title' )
183
184
self ._updated = self ._strptime (pull .get ('updated_at' ))
184
185
self ._user = None
185
186
if pull .get ('user' ):
186
- self ._user = User (pull .get ('user' ),self . _session )
187
+ self ._user = User (pull .get ('user' ),self )
187
188
188
189
@property
189
190
def base (self ):
@@ -237,8 +238,8 @@ def is_merged(self):
237
238
238
239
:returns: bool
239
240
"""
240
- url = self ._api + '/ merge'
241
- return self ._session . get (url ). status_code == 204
241
+ url = self ._build_url ( ' merge', base_url = self . _api )
242
+ return self ._boolean ( self . _get (url ), 204 , 404 )
242
243
243
244
@property
244
245
def issue_url (self ):
@@ -255,30 +256,29 @@ def list_comments(self):
255
256
256
257
:returns: list of :class:`ReviewComment <ReviewComment>`\ s
257
258
"""
258
- url = self ._api + '/comments'
259
- json = self ._get (url )
260
- ses = self ._session
261
- return [ReviewComment (comment ,ses )for comment in json ]
259
+ url = self ._build_url ('comments' ,base_url = self ._api )
260
+ json = self ._json (self ._get (url ),200 )
261
+ return [ReviewComment (comment ,self )for comment in json ]
262
262
263
263
def list_commits (self ):
264
264
"""List the commits on this pull request.
265
265
266
266
:returns: list of :class:`Commit <github3.git.Commit>`\ s
267
267
"""
268
- url = self ._api + '/commits'
269
- json = self ._get (url )
270
- ses = self ._session
271
- return [Commit (commit ,ses )for commit in json ]
268
+ url = self ._build_url ('commits' ,base_url = self ._api )
269
+ json = self ._json (self ._get (url ),200 )
270
+ return [Commit (commit ,self )for commit in json ]
272
271
273
272
def list_files (self ):
274
273
"""List the files associated with this pull request.
275
274
276
275
:returns: list of :class:`PullFile <PullFile>`\ s
277
276
"""
278
- url = self ._api + '/ files'
279
- json = self ._get (url )
277
+ url = self ._build_url ( ' files', base_url = self . _api )
278
+ json = self ._json ( self . _get (url ), 200 )
280
279
return [PullFile (f )for f in json ]
281
280
281
+ @GitHubCore .requires_auth
282
282
def merge (self ,commit_message = '' ):
283
283
"""Merge this pull request.
284
284
@@ -287,11 +287,11 @@ def merge(self, commit_message=''):
287
287
:type commit_message: str
288
288
:returns: bool
289
289
"""
290
- data = {'commit_message' :commit_message }if commit_message else None
291
- url = self ._api + '/merge'
290
+ data = None
291
+ if commit_message :
292
+ data = dumps ({'commit_message' :commit_message })
293
+ url = self ._build_url ('merge' ,base_url = self ._api )
292
294
resp = self ._put (url ,data )
293
- if resp .status_code == 200 :
294
- return resp .json ['merged' ]
295
295
return resp .json ['merged' ]
296
296
297
297
@property
@@ -324,6 +324,7 @@ def title(self):
324
324
"""The title of the request"""
325
325
return self ._title
326
326
327
+ @GitHubCore .requires_auth
327
328
def update (self ,title = '' ,body = '' ,state = '' ):
328
329
"""Update this pull request.
329
330
@@ -336,7 +337,7 @@ def update(self, title='', body='', state=''):
336
337
:returns: bool
337
338
"""
338
339
data = dumps ({'title' :title ,'body' :body ,'state' :state })
339
- json = self ._patch (self ._api ,data )
340
+ json = self ._json ( self . _patch (self ._api ,data ), 200 )
340
341
if json :
341
342
self ._update_ (json )
342
343
return True