Skip to content

Commit 87705c3

Browse files
committed
add github events import on new registration
1 parent 54a5ce4 commit 87705c3

File tree

4 files changed

+71
-9
lines changed

4 files changed

+71
-9
lines changed

pyhackers/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44

55
logging.basicConfig(format='[%(asctime)s](%(filename)s#%(lineno)d)%(levelname)-7s %(message)s',
6-
level=logging.NOTSET)
6+
level=logging.INFO)
77

88
config = ConfigParser.RawConfigParser()
99

pyhackers/model/cassandra/hierachy.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,4 +339,12 @@ class GithubUserList(MBase):
339339
user = columns.Text(primary_key=True)
340340
starred = columns.List(value_type=columns.Text)
341341
following = columns.List(value_type=columns.Text)
342-
followers = columns.List(value_type=columns.Text)
342+
followers = columns.List(value_type=columns.Text)
343+
344+
345+
class GithubEvent(MBase):
346+
id = columns.BigInt(primary_key=True)
347+
type = columns.Text()
348+
actor = columns.Text()
349+
org = columns.Text()
350+
created_at = columns.DateTime()

pyhackers/model/cassandra/management.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def create(cassa_key_space='pyhackers'):
5454
sync_table(GithubProject)
5555
sync_table(GithubUser)
5656
sync_table(GithubUserList)
57+
sync_table(GithubEvent)
5758

5859

5960
def test_insert():

pyhackers/worker/github_worker.py

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import logging
2+
from datetime import datetime as dt
3+
from dateutil import parser as dt_parser
24
#from cqlengine import BatchQuery
35
from cqlengine.query import DoesNotExist
46
from pyhackers.config import config
57
from pyhackers.model.user import User, SocialUser
6-
from pyhackers.model.cassandra.hierachy import (GithubProject, GithubUserList, GithubUser,
7-
User as CsUser, Post as CsPost, UserPost as CsUserPost, UserFollower as CsUserFollower,
8-
UserTimeLine)
8+
from pyhackers.model.cassandra.hierachy import (GithubProject,
9+
GithubUserList,
10+
GithubUser,
11+
GithubEvent,
12+
)
913
from github import Github
14+
import requests
15+
16+
GITHUB_URL = "https://api.github.com/{}?client_id={}&client_secret={}"
1017

1118

1219
class RegistrationGithubWorker():
@@ -137,14 +144,60 @@ def save_discovered_users(self):
137144

138145
logging.warn("User[{}]created".format(nick))
139146

147+
def get_user_timeline(self):
148+
user = self.github_user.login
149+
150+
url = GITHUB_URL.format("users/{}/received_events/public".format(user),
151+
self.client_id, self.client_secret)
152+
153+
def get_json_request(endpoint):
154+
r = requests.get(endpoint)
155+
156+
json_resp = r.json()
157+
logging.warn(r.headers)
158+
next_link = r.headers.get("link")
159+
next_request_url = None
160+
161+
if next_link is not None and len(next_link) > 0:
162+
try:
163+
next_request_url = next_link.split(";")[0].replace("<", "").replace(">", "")
164+
except:
165+
next_request_url = None
166+
167+
logging.warn("NextUp: {}".format(next_link))
168+
169+
for event in json_resp:
170+
id = int(event.get("id", None))
171+
type = event.get("type", None)
172+
actor = event.get("actor", None)
173+
actor_str = "{},{}".format(actor.get("id", ""), actor.get("login"))
174+
repo = event.get("repo", None)
175+
repo_str = "{},{}".format(repo.get("id", ""), repo.get("login"))
176+
public = event.get("public", None)
177+
created_at = dt_parser.parse(event.get("created_at", dt.utcnow()))
178+
org = event.get("org", None)
179+
org_str = None
180+
if org is not None:
181+
org_str = "{},{}".format(org.get("id", ""), org.get("login"))
182+
183+
GithubEvent.create(id=id, type=type, actor=actor_str,org=org_str, created_at=created_at)
184+
185+
logging.warn("{}[{}] {}".format(type, actor, id))
186+
187+
if next_request_url is not None:
188+
get_json_request(next_request_url)
189+
190+
191+
get_json_request(url)
140192

141193
def run(self):
142194
self.get_user_details_from_db()
143195
self.init_github()
144-
self.get_starred_projects()
145-
self.get_following_users()
146-
self.get_follower_users()
147-
self.save_discovered_users()
196+
#self.get_starred_projects()
197+
#self.get_following_users()
198+
#self.get_follower_users()
199+
#self.save_discovered_users()
200+
self.get_user_timeline()
148201
pass
149202

150203

0 commit comments

Comments
 (0)