Skip to content

Commit f651097

Browse files
committed
Add sessions to Events and event payload members
By making Events subclass GitHubCore, it will be passed a session when created. When that happens, any element of the payload that we convert to a github3 object will also have the same session. Fixes sigmavirus24#303
1 parent 7b3f589 commit f651097

1 file changed

Lines changed: 32 additions & 31 deletions

File tree

github3/events.py

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
"""
99
from __future__ import unicode_literals
1010

11-
from .models import GitHubObject
11+
from .models import GitHubCore
1212

1313

14-
class Event(GitHubObject):
14+
class Event(GitHubCore):
1515

1616
"""The :class:`Event <Event>` object. It structures and handles the data
1717
returned by via the `Events <http://developer.github.com/v3/events>`_
@@ -47,7 +47,7 @@ def _update_attributes(self, event):
4747
handler = _payload_handlers.get(self.type, identity)
4848
#: Dictionary with the payload. Payload structure is defined by type_.
4949
# _type: http://developer.github.com/v3/events/types
50-
self.payload = handler(event.get('payload'))
50+
self.payload = handler(event.get('payload'), self)
5151
#: Return ``tuple(owner, repository_name)``
5252
self.repo = event.get('repo')
5353
if self.repo is not None:
@@ -64,101 +64,102 @@ def list_types():
6464
return sorted(_payload_handlers.keys())
6565

6666

67-
def _commitcomment(payload):
67+
def _commitcomment(payload, session):
6868
from .repos.comment import RepoComment
6969
if payload.get('comment'):
70-
payload['comment'] = RepoComment(payload['comment'], None)
70+
payload['comment'] = RepoComment(payload['comment'], session)
7171
return payload
7272

7373

74-
def _follow(payload):
74+
def _follow(payload, session):
7575
from .users import User
7676
if payload.get('target'):
77-
payload['target'] = User(payload['target'], None)
77+
payload['target'] = User(payload['target'], session)
7878
return payload
7979

8080

81-
def _forkev(payload):
81+
def _forkev(payload, session):
8282
from .repos import Repository
8383
if payload.get('forkee'):
84-
payload['forkee'] = Repository(payload['forkee'], None)
84+
payload['forkee'] = Repository(payload['forkee'], session)
8585
return payload
8686

8787

88-
def _gist(payload):
88+
def _gist(payload, session):
8989
from .gists import Gist
9090
if payload.get('gist'):
91-
payload['gist'] = Gist(payload['gist'], None)
91+
payload['gist'] = Gist(payload['gist'], session)
9292
return payload
9393

9494

95-
def _issuecomm(payload):
95+
def _issuecomm(payload, session):
9696
from .issues import Issue
9797
from .issues.comment import IssueComment
9898
if payload.get('issue'):
99-
payload['issue'] = Issue(payload['issue'], None)
99+
payload['issue'] = Issue(payload['issue'], session)
100100
if payload.get('comment'):
101-
payload['comment'] = IssueComment(payload['comment'], None)
101+
payload['comment'] = IssueComment(payload['comment'], session)
102102
return payload
103103

104104

105-
def _issueevent(payload):
105+
def _issueevent(payload, session):
106106
from .issues import Issue
107107
if payload.get('issue'):
108-
payload['issue'] = Issue(payload['issue'], None)
108+
payload['issue'] = Issue(payload['issue'], session)
109109
return payload
110110

111111

112-
def _member(payload):
112+
def _member(payload, session):
113113
from .users import User
114114
if payload.get('member'):
115-
payload['member'] = User(payload['member'], None)
115+
payload['member'] = User(payload['member'], session)
116116
return payload
117117

118118

119-
def _pullreqev(payload):
119+
def _pullreqev(payload, session):
120120
from .pulls import PullRequest
121121
if payload.get('pull_request'):
122-
payload['pull_request'] = PullRequest(payload['pull_request'], None)
122+
payload['pull_request'] = PullRequest(payload['pull_request'],
123+
session)
123124
return payload
124125

125126

126-
def _pullreqcomm(payload):
127+
def _pullreqcomm(payload, session):
127128
from .pulls import PullRequest, ReviewComment
128129
# Transform the Pull Request attribute
129130
pull = payload.get('pull_request')
130131
if pull:
131-
payload['pull_request'] = PullRequest(pull)
132+
payload['pull_request'] = PullRequest(pull, session)
132133

133134
# Transform the Comment attribute
134135
comment = payload.get('comment')
135136
if comment:
136-
payload['comment'] = ReviewComment(comment, None)
137+
payload['comment'] = ReviewComment(comment, session)
137138
return payload
138139

139140

140-
def _release(payload):
141+
def _release(payload, session):
141142
from .repos.release import Release
142143
release = payload.get('release')
143144
if release:
144-
payload['release'] = Release(release)
145+
payload['release'] = Release(release, session)
145146
return payload
146147

147148

148-
def _team(payload):
149+
def _team(payload, session):
149150
from .orgs import Team
150151
from .repos import Repository
151152
from .users import User
152153
if payload.get('team'):
153-
payload['team'] = Team(payload['team'], None)
154+
payload['team'] = Team(payload['team'], session)
154155
if payload.get('repo'):
155-
payload['repo'] = Repository(payload['repo'], None)
156+
payload['repo'] = Repository(payload['repo'], session)
156157
if payload.get('sender'):
157-
payload['sender'] = User(payload['sender'], None)
158+
payload['sender'] = User(payload['sender'], session)
158159
return payload
159160

160161

161-
def identity(x):
162+
def identity(x, session):
162163
return x
163164

164165

@@ -174,7 +175,7 @@ def identity(x):
174175
'IssueCommentEvent': _issuecomm,
175176
'IssuesEvent': _issueevent,
176177
'MemberEvent': _member,
177-
'PublicEvent': lambda x: '',
178+
'PublicEvent': identity,
178179
'PullRequestEvent': _pullreqev,
179180
'PullRequestReviewCommentEvent': _pullreqcomm,
180181
'PushEvent': identity,

0 commit comments

Comments
 (0)