diff --git a/codegen/JsonDescriptionOfGithubApiV3/description.human_readable.json b/codegen/JsonDescriptionOfGithubApiV3/description.human_readable.json index a142fff5..b9b7b4d0 100644 --- a/codegen/JsonDescriptionOfGithubApiV3/description.human_readable.json +++ b/codegen/JsonDescriptionOfGithubApiV3/description.human_readable.json @@ -153,6 +153,15 @@ "addElement": true, "removeElement": true }, + { + "name": "subscriptions", + "singularName": "subscription", + "type": "Repository", + "getList": true, + "hasElement": true, + "addElement": true, + "removeElement": true + }, { "name": "starred", "singularName": "starred", @@ -952,6 +961,12 @@ "type": "Repository", "getList": true }, + { + "name": "subscriptions", + "singularName": "subscription", + "type": "Repository", + "getList": true + }, { "name": "starred", "singularName": "starred", @@ -1768,6 +1783,12 @@ "type": "NamedUser", "getList": true }, + { + "name": "subscribers", + "singularName": "subscriber", + "type": "NamedUser", + "getList": true + }, { "name": "stargazers", "singularName": "stargazer", diff --git a/codegen/JsonDescriptionOfGithubApiV3/description.normalized.json b/codegen/JsonDescriptionOfGithubApiV3/description.normalized.json index 1809e8d1..00e5f01f 100644 --- a/codegen/JsonDescriptionOfGithubApiV3/description.normalized.json +++ b/codegen/JsonDescriptionOfGithubApiV3/description.normalized.json @@ -999,6 +999,154 @@ "name": "void" } }, + { + "group": "subscriptions", + "name": [ + "add", + "to", + "subscriptions" + ], + "mandatoryParameters": [ + { + "type": { + "simple": false, + "cardinality": "scalar", + "name": "Repository" + }, + "name": "subscription" + } + ], + "request": { + "url": [ + { + "type": "constant", + "value": "/user/subscriptions/" + }, + { + "type": "identity", + "value": [ + "subscription" + ] + } + ], + "information": "status", + "verb": "PUT" + }, + "isMutation": false, + "optionalParameters": [], + "type": { + "simple": true, + "cardinality": "scalar", + "name": "void" + } + }, + { + "group": "subscriptions", + "name": [ + "get", + "subscriptions" + ], + "mandatoryParameters": [], + "request": { + "url": [ + { + "type": "constant", + "value": "/user/subscriptions" + } + ], + "information": "data", + "verb": "GET" + }, + "isMutation": false, + "optionalParameters": [], + "type": { + "simple": false, + "cardinality": "list", + "name": "Repository" + } + }, + { + "group": "subscriptions", + "name": [ + "has", + "in", + "subscriptions" + ], + "mandatoryParameters": [ + { + "type": { + "simple": false, + "cardinality": "scalar", + "name": "Repository" + }, + "name": "subscription" + } + ], + "request": { + "url": [ + { + "type": "constant", + "value": "/user/subscriptions/" + }, + { + "type": "identity", + "value": [ + "subscription" + ] + } + ], + "information": "status", + "verb": "GET" + }, + "isMutation": false, + "optionalParameters": [], + "type": { + "simple": true, + "cardinality": "scalar", + "name": "bool" + } + }, + { + "group": "subscriptions", + "name": [ + "remove", + "from", + "subscriptions" + ], + "mandatoryParameters": [ + { + "type": { + "simple": false, + "cardinality": "scalar", + "name": "Repository" + }, + "name": "subscription" + } + ], + "request": { + "url": [ + { + "type": "constant", + "value": "/user/subscriptions/" + }, + { + "type": "identity", + "value": [ + "subscription" + ] + } + ], + "information": "status", + "verb": "DELETE" + }, + "isMutation": false, + "optionalParameters": [], + "type": { + "simple": true, + "cardinality": "scalar", + "name": "void" + } + }, { "group": "starred", "name": [ @@ -5492,6 +5640,37 @@ "name": "Repository" } }, + { + "group": "subscriptions", + "name": [ + "get", + "subscriptions" + ], + "mandatoryParameters": [], + "request": { + "url": [ + { + "type": "attribute", + "value": [ + "url" + ] + }, + { + "type": "constant", + "value": "/subscriptions" + } + ], + "information": "data", + "verb": "GET" + }, + "isMutation": false, + "optionalParameters": [], + "type": { + "simple": false, + "cardinality": "list", + "name": "Repository" + } + }, { "group": "starred", "name": [ @@ -10378,6 +10557,37 @@ "name": "NamedUser" } }, + { + "group": "subscribers", + "name": [ + "get", + "subscribers" + ], + "mandatoryParameters": [], + "request": { + "url": [ + { + "type": "attribute", + "value": [ + "url" + ] + }, + { + "type": "constant", + "value": "/subscribers" + } + ], + "information": "data", + "verb": "GET" + }, + "isMutation": false, + "optionalParameters": [], + "type": { + "simple": false, + "cardinality": "list", + "name": "NamedUser" + } + }, { "group": "stargazers", "name": [ diff --git a/doc/ReferenceOfApis.md b/doc/ReferenceOfApis.md index 5f1fbafc..143af2f4 100644 --- a/doc/ReferenceOfApis.md +++ b/doc/ReferenceOfApis.md @@ -413,7 +413,7 @@ API `/repos/:user/:repo/statuses/:sha` API `/repos/:user/:repo/subscribers` ==================================== -* GET: (TODO) +* GET: `Repository.get_subscribers` API `/repos/:user/:repo/tags` ============================= @@ -510,13 +510,13 @@ API `/user/starred/:user/:repo` API `/user/subscriptions` ========================= -* GET: (TODO) +* GET: `AuthenticatedUser.get_subscriptions` API `/user/subscriptions/:user/:repo` ===================================== -* GET: (TODO) -* PUT: (TODO) -* DELETE: (TODO) +* GET: `AuthenticatedUser.has_in_subscriptions` +* PUT: `AuthenticatedUser.add_to_subscriptions` +* DELETE: `AuthenticatedUser.remove_from_subscriptions` API `/user/watched` =================== @@ -579,7 +579,7 @@ API `/users/:user/starred` API `/users/:user/subscriptions` ================================ -* GET: (TODO) +* GET: `NamedUser.get_subscriptions` API `/users/:user/watched` ========================== diff --git a/doc/ReferenceOfClasses.md b/doc/ReferenceOfClasses.md index 5430fb39..ba4dc547 100644 --- a/doc/ReferenceOfClasses.md +++ b/doc/ReferenceOfClasses.md @@ -190,6 +190,16 @@ Starred * `remove_from_starred( starred )` * `starred`: `Repository` +Subscriptions +------------- +* `add_to_subscriptions( subscription )` + * `subscription`: `Repository` +* `get_subscriptions()`: iterator of `Repository` +* `has_in_subscriptions( subscription )`: bool + * `subscription`: `Repository` +* `remove_from_subscriptions( subscription )` + * `subscription`: `Repository` + Watched ------- * `add_to_watched( watched )` @@ -829,6 +839,10 @@ Starred ------- * `get_starred()`: iterator of `Repository` +Subscriptions +------------- +* `get_subscriptions()`: iterator of `Repository` + Watched ------- * `get_watched()`: iterator of `Repository` @@ -1311,6 +1325,10 @@ Stargazers ---------- * `get_stargazers()`: iterator of `NamedUser` +Subscribers +----------- +* `get_subscribers()`: iterator of `NamedUser` + Tags ---- * `get_tags()`: iterator of `Tag` diff --git a/github/AuthenticatedUser.py b/github/AuthenticatedUser.py index 45a26e6b..4d175aca 100644 --- a/github/AuthenticatedUser.py +++ b/github/AuthenticatedUser.py @@ -182,6 +182,15 @@ class AuthenticatedUser( GithubObject.GithubObject ): None ) + def add_to_subscriptions( self, subscription ): + assert isinstance( subscription, Repository.Repository ), subscription + headers, data = self._requester.requestAndCheck( + "PUT", + "/user/subscriptions/" + subscription._identity, + None, + None + ) + def add_to_watched( self, watched ): assert isinstance( watched, Repository.Repository ), watched headers, data = self._requester.requestAndCheck( @@ -533,6 +542,20 @@ class AuthenticatedUser( GithubObject.GithubObject ): data ) + def get_subscriptions( self ): + headers, data = self._requester.requestAndCheck( + "GET", + "/user/subscriptions", + None, + None + ) + return PaginatedList.PaginatedList( + Repository.Repository, + self._requester, + headers, + data + ) + def get_watched( self ): headers, data = self._requester.requestAndCheck( "GET", @@ -567,6 +590,16 @@ class AuthenticatedUser( GithubObject.GithubObject ): ) return status == 204 + def has_in_subscriptions( self, subscription ): + assert isinstance( subscription, Repository.Repository ), subscription + status, headers, data = self._requester.requestRaw( + "GET", + "/user/subscriptions/" + subscription._identity, + None, + None + ) + return status == 204 + def has_in_watched( self, watched ): assert isinstance( watched, Repository.Repository ), watched status, headers, data = self._requester.requestRaw( @@ -605,6 +638,15 @@ class AuthenticatedUser( GithubObject.GithubObject ): None ) + def remove_from_subscriptions( self, subscription ): + assert isinstance( subscription, Repository.Repository ), subscription + headers, data = self._requester.requestAndCheck( + "DELETE", + "/user/subscriptions/" + subscription._identity, + None, + None + ) + def remove_from_watched( self, watched ): assert isinstance( watched, Repository.Repository ), watched headers, data = self._requester.requestAndCheck( diff --git a/github/NamedUser.py b/github/NamedUser.py index 16386246..ce2fcbbc 100644 --- a/github/NamedUser.py +++ b/github/NamedUser.py @@ -328,6 +328,20 @@ class NamedUser( GithubObject.GithubObject ): data ) + def get_subscriptions( self ): + headers, data = self._requester.requestAndCheck( + "GET", + self.url + "/subscriptions", + None, + None + ) + return PaginatedList.PaginatedList( + Repository.Repository, + self._requester, + headers, + data + ) + def get_watched( self ): headers, data = self._requester.requestAndCheck( "GET", diff --git a/github/Repository.py b/github/Repository.py index a99c3286..05c2e5f9 100644 --- a/github/Repository.py +++ b/github/Repository.py @@ -978,6 +978,20 @@ class Repository( GithubObject.GithubObject ): data ) + def get_subscribers( self ): + headers, data = self._requester.requestAndCheck( + "GET", + self.url + "/subscribers", + None, + None + ) + return PaginatedList.PaginatedList( + NamedUser.NamedUser, + self._requester, + headers, + data + ) + def get_tags( self ): headers, data = self._requester.requestAndCheck( "GET", diff --git a/test/AuthenticatedUser.py b/test/AuthenticatedUser.py index 3a5b1b96..295e0d6f 100644 --- a/test/AuthenticatedUser.py +++ b/test/AuthenticatedUser.py @@ -99,6 +99,15 @@ class AuthenticatedUser( Framework.TestCase ): self.user.add_to_starred( gitflow ) self.assertEqual( self.user.has_in_starred( gitflow ), True ) + def testSubscriptions( self ): + gitflow = self.g.get_user( "nvie" ).get_repo( "gitflow" ) + self.assertListKeyEqual( self.user.get_subscriptions(), lambda r: r.name, [ "gitflow", "ViDE", "Boost.HierarchicalEnum", "QuadProgMm", "DrawSyntax", "DrawTurksHead", "PrivateStuff", "vincent-jacques.net", "Hacking", "C4Planner", "developer.github.com", "PyGithub", "PyGithub", "django", "CinePlanning", "PyGithub", "PyGithub", "PyGithub", "IpMap", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub" ] ) + self.assertEqual( self.user.has_in_subscriptions( gitflow ), True ) + self.user.remove_from_subscriptions( gitflow ) + self.assertEqual( self.user.has_in_subscriptions( gitflow ), False ) + self.user.add_to_subscriptions( gitflow ) + self.assertEqual( self.user.has_in_subscriptions( gitflow ), True ) + def testGetAuthorizations( self ): self.assertListKeyEqual( self.user.get_authorizations(), lambda a: a.id, [ 372294 ] ) diff --git a/test/NamedUser.py b/test/NamedUser.py index 8044ca92..8f76a6e6 100644 --- a/test/NamedUser.py +++ b/test/NamedUser.py @@ -114,6 +114,9 @@ class NamedUser( Framework.TestCase ): def testGetStarred( self ): self.assertListKeyEqual( self.user.get_starred(), lambda r: r.name, [ "git", "boost.php", "capistrano", "boost.perl", "git-subtree", "git-hg", "homebrew", "celtic_knot", "twisted-intro", "markup", "hub", "gitflow", "murder", "boto", "agit", "d3", "pygit2", "git-pulls", "django_mathlatex", "scrumblr", "developer.github.com", "python-github3", "PlantUML", "bootstrap", "drawnby", "django-socketio", "django-realtime", "playground", "BozoCrack", "FatherBeaver", "amaunet", "django", "django", "moviePlanning", "folly" ] ) + def testGetSubscriptions( self ): + self.assertListKeyEqual( self.user.get_subscriptions(), lambda r: r.name, [ "ViDE", "Boost.HierarchicalEnum", "QuadProgMm", "DrawSyntax", "DrawTurksHead", "PrivateStuff", "vincent-jacques.net", "Hacking", "C4Planner", "developer.github.com", "PyGithub", "PyGithub", "django", "CinePlanning", "PyGithub", "PyGithub", "PyGithub", "IpMap", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub", "PyGithub" ] ) + def testGetEvents( self ): self.assertListKeyBegin( self.user.get_events(), lambda e: e.type, [ "GistEvent", "IssueCommentEvent", "PushEvent", "IssuesEvent" ] ) diff --git a/test/ReplayData/AuthenticatedUser.testSubscriptions.txt b/test/ReplayData/AuthenticatedUser.testSubscriptions.txt new file mode 100644 index 00000000..a2a98fbf --- /dev/null +++ b/test/ReplayData/AuthenticatedUser.testSubscriptions.txt @@ -0,0 +1,45 @@ +https GET api.github.com None /users/nvie {'Authorization': 'Basic login_and_password_removed'} null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4945'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('content-length', '603'), ('server', 'nginx/1.0.13'), ('last-modified', 'Mon, 03 Sep 2012 09:24:06 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"eeac2be05fbbb88d548aaf0353a465f9"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 07 Sep 2012 23:53:21 GMT'), ('content-type', 'application/json; charset=utf-8')] +{"type":"User","gravatar_id":"466ef7561a0b100dc5a1021959962d28","hireable":false,"login":"nvie","public_gists":28,"blog":"http://nvie.com","created_at":"2009-05-12T21:19:38Z","bio":null,"email":"vincent@3rdcloud.com","company":"3rd Cloud","followers":347,"avatar_url":"https://secure.gravatar.com/avatar/466ef7561a0b100dc5a1021959962d28?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","public_repos":64,"name":"Vincent Driessen","url":"https://api.github.com/users/nvie","following":41,"html_url":"https://github.com/nvie","location":"Netherlands","id":83844} + +https GET api.github.com None /repos/nvie/gitflow {'Authorization': 'Basic login_and_password_removed'} null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4944'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('content-length', '1272'), ('server', 'nginx/1.0.13'), ('last-modified', 'Fri, 07 Sep 2012 23:34:46 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"86a43618f03354f322e8cd3886e02308"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 07 Sep 2012 23:53:22 GMT'), ('content-type', 'application/json; charset=utf-8')] +{"master_branch":"develop","forks":429,"has_downloads":true,"owner":{"gravatar_id":"466ef7561a0b100dc5a1021959962d28","login":"nvie","avatar_url":"https://secure.gravatar.com/avatar/466ef7561a0b100dc5a1021959962d28?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/nvie","id":83844},"description":"Git extensions to provide high-level repository operations for Vincent Driessen's branching model.","permissions":{"pull":true,"push":false,"admin":false},"forks_count":429,"clone_url":"https://github.com/nvie/gitflow.git","git_url":"git://github.com/nvie/gitflow.git","created_at":"2010-01-20T23:14:12Z","network_count":429,"has_wiki":true,"watchers_count":4650,"watchers":4650,"open_issues_count":100,"size":4430,"fork":false,"open_issues":100,"has_issues":true,"updated_at":"2012-09-07T23:34:46Z","full_name":"nvie/gitflow","name":"gitflow","url":"https://api.github.com/repos/nvie/gitflow","mirror_url":null,"ssh_url":"git@github.com:nvie/gitflow.git","html_url":"https://github.com/nvie/gitflow","private":false,"id":481366,"language":"Shell","homepage":"http://nvie.com/posts/a-successful-git-branching-model/","svn_url":"https://github.com/nvie/gitflow","pushed_at":"2012-07-10T09:18:03Z"} + +https GET api.github.com None /user/subscriptions {'Authorization': 'Basic login_and_password_removed'} null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4943'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('content-length', '35709'), ('server', 'nginx/1.0.13'), ('last-modified', 'Fri, 07 Sep 2012 23:34:46 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('link', '; rel="next", ; rel="last"'), ('etag', '"86a43618f03354f322e8cd3886e02308"'), ('cache-control', 'private, s-maxage=60, max-age=60'), ('date', 'Fri, 07 Sep 2012 23:53:22 GMT'), ('content-type', 'application/json; charset=utf-8')] +[{"master_branch":"develop","forks":429,"watchers_count":4650,"has_downloads":true,"owner":{"gravatar_id":"466ef7561a0b100dc5a1021959962d28","login":"nvie","url":"https://api.github.com/users/nvie","avatar_url":"https://secure.gravatar.com/avatar/466ef7561a0b100dc5a1021959962d28?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":83844},"open_issues_count":100,"description":"Git extensions to provide high-level repository operations for Vincent Driessen's branching model.","permissions":{"pull":true,"push":false,"admin":false},"forks_count":429,"clone_url":"https://github.com/nvie/gitflow.git","created_at":"2012-09-08T06:53:02Z","has_wiki":true,"watchers":4650,"html_url":"https://github.com/nvie/gitflow","size":4430,"fork":false,"open_issues":100,"has_issues":true,"updated_at":"2012-09-07T23:34:46Z","full_name":"nvie/gitflow","name":"gitflow","url":"https://api.github.com/repos/nvie/gitflow","ssh_url":"git@github.com:nvie/gitflow.git","git_url":"git://github.com/nvie/gitflow.git","private":false,"id":481366,"mirror_url":null,"language":"Shell","homepage":"http://nvie.com/posts/a-successful-git-branching-model/","svn_url":"https://github.com/nvie/gitflow","pushed_at":"2012-07-10T09:18:03Z"},{"master_branch":"master","forks":1,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"Vincent's Development Environment","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/ViDE.git","created_at":null,"has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/ViDE","size":1496,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-06-08T11:05:51Z","full_name":"jacquev6/ViDE","name":"ViDE","url":"https://api.github.com/repos/jacquev6/ViDE","ssh_url":"git@github.com:jacquev6/ViDE.git","git_url":"git://github.com/jacquev6/ViDE.git","private":false,"id":767343,"mirror_url":null,"language":"Python","homepage":"","svn_url":"https://github.com/jacquev6/ViDE","pushed_at":"2012-06-08T11:05:51Z"},{"master_branch":"master","forks":1,"watchers_count":1,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/Boost.HierarchicalEnum.git","created_at":"2012-08-07T03:23:22Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/jacquev6/Boost.HierarchicalEnum","size":112,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-07-27T02:32:15Z","full_name":"jacquev6/Boost.HierarchicalEnum","name":"Boost.HierarchicalEnum","url":"https://api.github.com/repos/jacquev6/Boost.HierarchicalEnum","ssh_url":"git@github.com:jacquev6/Boost.HierarchicalEnum.git","git_url":"git://github.com/jacquev6/Boost.HierarchicalEnum.git","private":false,"id":767382,"mirror_url":null,"language":"C++","homepage":"","svn_url":"https://github.com/jacquev6/Boost.HierarchicalEnum","pushed_at":"2011-11-27T14:00:23Z"},{"master_branch":"master","forks":1,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"A C++ interface to specify quadratic problems by C++ expressions of your variables. Try it online.","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/QuadProgMm.git","created_at":null,"has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/QuadProgMm","size":760,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-04-16T18:39:06Z","full_name":"jacquev6/QuadProgMm","name":"QuadProgMm","url":"https://api.github.com/repos/jacquev6/QuadProgMm","ssh_url":"git@github.com:jacquev6/QuadProgMm.git","git_url":"git://github.com/jacquev6/QuadProgMm.git","private":false,"id":767386,"mirror_url":null,"language":"C++","homepage":"http://vincent-jacques.net/QuadProgMm","svn_url":"https://github.com/jacquev6/QuadProgMm","pushed_at":"2012-04-16T18:39:05Z"},{"master_branch":"master","forks":1,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"Draw syntax diagrams from EBNF grammars. API in C++ and Python. Try it online.","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/DrawSyntax.git","created_at":"2012-08-07T03:23:17Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/DrawSyntax","size":1760,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-08-11T03:53:58Z","full_name":"jacquev6/DrawSyntax","name":"DrawSyntax","url":"https://api.github.com/repos/jacquev6/DrawSyntax","ssh_url":"git@github.com:jacquev6/DrawSyntax.git","git_url":"git://github.com/jacquev6/DrawSyntax.git","private":false,"id":767392,"mirror_url":null,"language":"C++","homepage":"http://vincent-jacques.net/DrawSyntax/","svn_url":"https://github.com/jacquev6/DrawSyntax","pushed_at":"2011-11-27T14:00:32Z"},{"master_branch":"master","forks":1,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"A tool to draw Turk's Head Knots. Try it online","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/DrawTurksHead.git","created_at":"2012-08-07T03:23:13Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/DrawTurksHead","size":3232,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-04-16T18:38:55Z","full_name":"jacquev6/DrawTurksHead","name":"DrawTurksHead","url":"https://api.github.com/repos/jacquev6/DrawTurksHead","ssh_url":"git@github.com:jacquev6/DrawTurksHead.git","git_url":"git://github.com/jacquev6/DrawTurksHead.git","private":false,"id":767403,"mirror_url":null,"language":"C++","homepage":"http://vincent-jacques.net/DrawTurksHead/","svn_url":"https://github.com/jacquev6/DrawTurksHead","pushed_at":"2012-04-16T18:38:54Z"},{"forks":0,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/PrivateStuff.git","created_at":null,"has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/PrivateStuff","size":1252,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-09-07T19:22:17Z","full_name":"jacquev6/PrivateStuff","name":"PrivateStuff","url":"https://api.github.com/repos/jacquev6/PrivateStuff","ssh_url":"git@github.com:jacquev6/PrivateStuff.git","git_url":"git://github.com/jacquev6/PrivateStuff.git","private":true,"id":1592290,"mirror_url":null,"language":"Python","homepage":"","svn_url":"https://github.com/jacquev6/PrivateStuff","pushed_at":"2012-09-07T19:21:59Z"},{"forks":0,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/vincent-jacques.net.git","created_at":null,"has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/vincent-jacques.net","size":164,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-06-30T09:29:07Z","full_name":"jacquev6/vincent-jacques.net","name":"vincent-jacques.net","url":"https://api.github.com/repos/jacquev6/vincent-jacques.net","ssh_url":"git@github.com:jacquev6/vincent-jacques.net.git","git_url":"git://github.com/jacquev6/vincent-jacques.net.git","private":true,"id":1986874,"mirror_url":null,"language":"Python","homepage":"vincent-jacques.net","svn_url":"https://github.com/jacquev6/vincent-jacques.net","pushed_at":"2012-06-30T09:29:07Z"},{"forks":0,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/Hacking.git","created_at":"2012-08-07T03:23:13Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/Hacking","size":148,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-09-07T20:42:54Z","full_name":"jacquev6/Hacking","name":"Hacking","url":"https://api.github.com/repos/jacquev6/Hacking","ssh_url":"git@github.com:jacquev6/Hacking.git","git_url":"git://github.com/jacquev6/Hacking.git","private":true,"id":1988081,"mirror_url":null,"language":"Python","homepage":"","svn_url":"https://github.com/jacquev6/Hacking","pushed_at":"2012-09-07T20:42:54Z"},{"forks":1,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"Caesar IV: anticipate your city","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/C4Planner.git","created_at":"2012-08-07T03:23:20Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/C4Planner","size":4716,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-07-27T04:29:14Z","full_name":"jacquev6/C4Planner","name":"C4Planner","url":"https://api.github.com/repos/jacquev6/C4Planner","ssh_url":"git@github.com:jacquev6/C4Planner.git","git_url":"git://github.com/jacquev6/C4Planner.git","private":false,"id":2260441,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/C4Planner","svn_url":"https://github.com/jacquev6/C4Planner","pushed_at":"2011-11-27T20:51:06Z"},{"forks":0,"watchers_count":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/developer.github.com.git","created_at":null,"has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/developer.github.com","size":184,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-06-05T11:35:40Z","full_name":"jacquev6/developer.github.com","name":"developer.github.com","url":"https://api.github.com/repos/jacquev6/developer.github.com","ssh_url":"git@github.com:jacquev6/developer.github.com.git","git_url":"git://github.com/jacquev6/developer.github.com.git","private":false,"id":3361136,"mirror_url":null,"language":"Ruby","homepage":"","svn_url":"https://github.com/jacquev6/developer.github.com","pushed_at":"2012-06-05T11:35:40Z"},{"forks":16,"watchers_count":67,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":13,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":true,"admin":true},"forks_count":16,"clone_url":"https://github.com/jacquev6/PyGithub.git","created_at":null,"has_wiki":false,"watchers":67,"html_url":"https://github.com/jacquev6/PyGithub","size":228,"fork":false,"open_issues":13,"has_issues":true,"updated_at":"2012-09-07T23:16:45Z","full_name":"jacquev6/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub","ssh_url":"git@github.com:jacquev6/PyGithub.git","git_url":"git://github.com/jacquev6/PyGithub.git","private":false,"id":3544490,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/jacquev6/PyGithub","pushed_at":"2012-09-07T23:16:45Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"b2e096f2c016d8dc168a3a5e6281b07a","login":"abersager","url":"https://api.github.com/users/abersager","avatar_url":"https://secure.gravatar.com/avatar/b2e096f2c016d8dc168a3a5e6281b07a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":1328351},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/abersager/PyGithub.git","created_at":"2012-08-07T03:21:09Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/abersager/PyGithub","size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:19Z","full_name":"abersager/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/abersager/PyGithub","ssh_url":"git@github.com:abersager/PyGithub.git","git_url":"git://github.com/abersager/PyGithub.git","private":false,"id":3831162,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/abersager/PyGithub","pushed_at":"2012-03-26T10:05:31Z"},{"forks":0,"watchers_count":2,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":0,"description":"The Web framework for perfectionists with deadlines. Now on GitHub.","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/django.git","created_at":null,"has_wiki":false,"watchers":2,"html_url":"https://github.com/jacquev6/django","size":48476,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-06-09T10:37:50Z","full_name":"jacquev6/django","name":"django","url":"https://api.github.com/repos/jacquev6/django","ssh_url":"git@github.com:jacquev6/django.git","git_url":"git://github.com/jacquev6/django.git","private":false,"id":4166730,"mirror_url":null,"language":"Python","homepage":"http://www.djangoproject.com/","svn_url":"https://github.com/jacquev6/django","pushed_at":"2012-04-28T04:05:15Z"},{"forks":1,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":5,"description":"Un outil pour ceux qui aiment voir plusieurs films le même jour","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/CinePlanning.git","created_at":"2012-08-07T03:23:19Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/jacquev6/CinePlanning","size":240,"fork":false,"open_issues":5,"has_issues":true,"updated_at":"2012-06-17T05:55:59Z","full_name":"jacquev6/CinePlanning","name":"CinePlanning","url":"https://api.github.com/repos/jacquev6/CinePlanning","ssh_url":"git@github.com:jacquev6/CinePlanning.git","git_url":"git://github.com/jacquev6/CinePlanning.git","private":false,"id":4627544,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/CinePlanning","svn_url":"https://github.com/jacquev6/CinePlanning","pushed_at":"2012-06-17T05:55:58Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"3aa27c0add742f542848af3b8a9e980c","login":"pmuilu","url":"https://api.github.com/users/pmuilu","avatar_url":"https://secure.gravatar.com/avatar/3aa27c0add742f542848af3b8a9e980c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":691799},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/pmuilu/PyGithub.git","created_at":"2012-08-07T03:21:41Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/pmuilu/PyGithub","size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:44Z","full_name":"pmuilu/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/pmuilu/PyGithub","ssh_url":"git@github.com:pmuilu/PyGithub.git","git_url":"git://github.com/pmuilu/PyGithub.git","private":false,"id":4716322,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/pmuilu/PyGithub","pushed_at":"2012-06-19T16:50:37Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"85203b21c562062e5641f0b8d4b98d9b","login":"herlo","url":"https://api.github.com/users/herlo","avatar_url":"https://secure.gravatar.com/avatar/85203b21c562062e5641f0b8d4b98d9b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":89334},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/herlo/PyGithub.git","created_at":"2012-08-07T03:21:47Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/herlo/PyGithub","size":164,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:47Z","full_name":"herlo/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/herlo/PyGithub","ssh_url":"git@github.com:herlo/PyGithub.git","git_url":"git://github.com/herlo/PyGithub.git","private":false,"id":4720987,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/herlo/PyGithub","pushed_at":"2012-06-13T10:57:26Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"3ceac58506711008b9e93ad31fcb0f45","login":"roverdotcom","url":"https://api.github.com/users/roverdotcom","avatar_url":"https://secure.gravatar.com/avatar/3ceac58506711008b9e93ad31fcb0f45?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png","id":1463288},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/roverdotcom/PyGithub.git","created_at":"2012-08-07T03:21:50Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/roverdotcom/PyGithub","size":116,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:51Z","full_name":"roverdotcom/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/roverdotcom/PyGithub","ssh_url":"git@github.com:roverdotcom/PyGithub.git","git_url":"git://github.com/roverdotcom/PyGithub.git","private":false,"id":4785693,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/roverdotcom/PyGithub","pushed_at":"2012-06-25T18:44:19Z"},{"forks":0,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":327146},"open_issues_count":2,"description":"HTML5 browsable IP map inspired by http://xkcd.com/195/","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/IpMap.git","created_at":null,"has_wiki":false,"watchers":0,"html_url":"https://github.com/jacquev6/IpMap","size":136,"fork":false,"open_issues":2,"has_issues":true,"updated_at":"2012-08-06T20:40:59Z","full_name":"jacquev6/IpMap","name":"IpMap","url":"https://api.github.com/repos/jacquev6/IpMap","ssh_url":"git@github.com:jacquev6/IpMap.git","git_url":"git://github.com/jacquev6/IpMap.git","private":true,"id":4835930,"mirror_url":null,"language":"JavaScript","homepage":"http://vincent-jacques.net/IpMap","svn_url":"https://github.com/jacquev6/IpMap","pushed_at":"2012-06-30T09:28:28Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"433a7fa3917a38691aa9914b61444875","login":"thouis","url":"https://api.github.com/users/thouis","avatar_url":"https://secure.gravatar.com/avatar/433a7fa3917a38691aa9914b61444875?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":473043},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/thouis/PyGithub.git","created_at":"2012-08-07T03:21:53Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/thouis/PyGithub","size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:54Z","full_name":"thouis/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/thouis/PyGithub","ssh_url":"git@github.com:thouis/PyGithub.git","git_url":"git://github.com/thouis/PyGithub.git","private":false,"id":4957672,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/thouis/PyGithub","pushed_at":"2012-07-09T12:42:19Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"13a30f9924fa2bd918cbb8d06dd8b55a","login":"malexw","url":"https://api.github.com/users/malexw","avatar_url":"https://secure.gravatar.com/avatar/13a30f9924fa2bd918cbb8d06dd8b55a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":577322},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/malexw/PyGithub.git","created_at":"2012-08-07T03:21:56Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/malexw/PyGithub","size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:57Z","full_name":"malexw/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/malexw/PyGithub","ssh_url":"git@github.com:malexw/PyGithub.git","git_url":"git://github.com/malexw/PyGithub.git","private":false,"id":4992915,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/malexw/PyGithub","pushed_at":"2012-07-11T18:11:24Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"37a932b3abe212892173784736ed6b12","login":"engie","url":"https://api.github.com/users/engie","avatar_url":"https://secure.gravatar.com/avatar/37a932b3abe212892173784736ed6b12?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":1247},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/engie/PyGithub.git","created_at":"2012-08-07T03:21:59Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/engie/PyGithub","size":136,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:22:00Z","full_name":"engie/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/engie/PyGithub","ssh_url":"git@github.com:engie/PyGithub.git","git_url":"git://github.com/engie/PyGithub.git","private":false,"id":5153069,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/engie/PyGithub","pushed_at":"2012-07-23T16:42:58Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"ffcbd195c843b902fcdaa9986a2a0116","login":"oangeor","url":"https://api.github.com/users/oangeor","avatar_url":"https://secure.gravatar.com/avatar/ffcbd195c843b902fcdaa9986a2a0116?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":1707945},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/oangeor/PyGithub.git","created_at":"2012-08-07T03:22:03Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/oangeor/PyGithub","size":1292,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:22:04Z","full_name":"oangeor/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/oangeor/PyGithub","ssh_url":"git@github.com:oangeor/PyGithub.git","git_url":"git://github.com/oangeor/PyGithub.git","private":false,"id":5190054,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/oangeor/PyGithub","pushed_at":"2012-07-24T16:19:13Z"},{"forks":0,"watchers_count":1,"has_downloads":true,"owner":{"gravatar_id":"a62c07aeefe3d9cc2ba18861f7eeef7d","login":"alejo8591","url":"https://api.github.com/users/alejo8591","avatar_url":"https://secure.gravatar.com/avatar/a62c07aeefe3d9cc2ba18861f7eeef7d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":1151850},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/alejo8591/PyGithub.git","created_at":"2012-08-07T03:22:07Z","has_wiki":false,"watchers":1,"html_url":"https://github.com/alejo8591/PyGithub","size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-04T07:01:31Z","full_name":"alejo8591/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/alejo8591/PyGithub","ssh_url":"git@github.com:alejo8591/PyGithub.git","git_url":"git://github.com/alejo8591/PyGithub.git","private":false,"id":5293768,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/alejo8591/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"92a24b96be9d9ce5e608751cc0c95823","login":"jagster02","url":"https://api.github.com/users/jagster02","avatar_url":"https://secure.gravatar.com/avatar/92a24b96be9d9ce5e608751cc0c95823?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":1383412},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/jagster02/PyGithub.git","created_at":"2012-08-09T13:55:23Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/jagster02/PyGithub","size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-07T23:29:19Z","full_name":"jagster02/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/jagster02/PyGithub","ssh_url":"git@github.com:jagster02/PyGithub.git","git_url":"git://github.com/jagster02/PyGithub.git","private":false,"id":5334906,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/jagster02/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"01f9109a647ef1dac0198da94d5dfc35","login":"cs2ctest","url":"https://api.github.com/users/cs2ctest","avatar_url":"https://secure.gravatar.com/avatar/01f9109a647ef1dac0198da94d5dfc35?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":2108297},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/cs2ctest/PyGithub.git","created_at":"2012-08-09T19:56:03Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/cs2ctest/PyGithub","size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-09T09:00:55Z","full_name":"cs2ctest/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/cs2ctest/PyGithub","ssh_url":"git@github.com:cs2ctest/PyGithub.git","git_url":"git://github.com/cs2ctest/PyGithub.git","private":false,"id":5353371,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/cs2ctest/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"83fdd59f80118ac8e56fd6f732239190","login":"feiying","url":"https://api.github.com/users/feiying","avatar_url":"https://secure.gravatar.com/avatar/83fdd59f80118ac8e56fd6f732239190?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":1784180},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/feiying/PyGithub.git","created_at":"2012-08-10T18:57:02Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/feiying/PyGithub","size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-10T04:51:27Z","full_name":"feiying/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/feiying/PyGithub","ssh_url":"git@github.com:feiying/PyGithub.git","git_url":"git://github.com/feiying/PyGithub.git","private":false,"id":5365056,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/feiying/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"13df3b204a5708ed557a07628ea00660","login":"tdcarrol","url":"https://api.github.com/users/tdcarrol","avatar_url":"https://secure.gravatar.com/avatar/13df3b204a5708ed557a07628ea00660?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":435947},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/tdcarrol/PyGithub.git","created_at":"2012-08-22T05:17:05Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/tdcarrol/PyGithub","size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-21T15:14:27Z","full_name":"tdcarrol/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/tdcarrol/PyGithub","ssh_url":"git@github.com:tdcarrol/PyGithub.git","git_url":"git://github.com/tdcarrol/PyGithub.git","private":false,"id":5496795,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/tdcarrol/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"ae8a2af3de601885a14bb71240e5d1a6","login":"xobb1t","url":"https://api.github.com/users/xobb1t","avatar_url":"https://secure.gravatar.com/avatar/ae8a2af3de601885a14bb71240e5d1a6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","id":344095},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/xobb1t/PyGithub.git","created_at":"2012-09-03T15:31:32Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/xobb1t/PyGithub","size":108,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-25T19:40:53Z","full_name":"xobb1t/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/xobb1t/PyGithub","ssh_url":"git@github.com:xobb1t/PyGithub.git","git_url":"git://github.com/xobb1t/PyGithub.git","private":false,"id":5554026,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/xobb1t/PyGithub","pushed_at":"2012-08-25T19:40:53Z"},{"forks":0,"watchers_count":0,"has_downloads":true,"owner":{"gravatar_id":"ad620f78a113948d4ded151e3025a3b3","login":"braincorp","url":"https://api.github.com/users/braincorp","avatar_url":"https://secure.gravatar.com/avatar/ad620f78a113948d4ded151e3025a3b3?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png","id":2085477},"open_issues_count":0,"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/braincorp/PyGithub.git","created_at":"2012-09-03T15:31:30Z","has_wiki":false,"watchers":0,"html_url":"https://github.com/braincorp/PyGithub","size":240,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-30T06:54:52Z","full_name":"braincorp/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/braincorp/PyGithub","ssh_url":"git@github.com:braincorp/PyGithub.git","git_url":"git://github.com/braincorp/PyGithub.git","private":false,"id":5611539,"mirror_url":null,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/braincorp/PyGithub","pushed_at":"2012-08-23T07:38:20Z"}] + +https GET api.github.com None /user/subscriptions?page=2 {'Authorization': 'Basic login_and_password_removed'} null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4942'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('content-length', '1221'), ('server', 'nginx/1.0.13'), ('last-modified', 'Fri, 31 Aug 2012 13:53:17 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('link', '; rel="first", ; rel="prev"'), ('etag', '"c8db8e82d53b0c24d493ad0dd8413000"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 07 Sep 2012 23:53:23 GMT'), ('content-type', 'application/json; charset=utf-8')] +[{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"8707d63a44f6cc04e58a655f3df3105c","login":"gregwjacobs","avatar_url":"https://secure.gravatar.com/avatar/8707d63a44f6cc04e58a655f3df3105c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/gregwjacobs","id":1749292},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/gregwjacobs/PyGithub.git","git_url":"git://github.com/gregwjacobs/PyGithub.git","created_at":"2012-09-03T15:31:27Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":240,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-31T13:53:17Z","full_name":"gregwjacobs/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/gregwjacobs/PyGithub","mirror_url":null,"ssh_url":"git@github.com:gregwjacobs/PyGithub.git","html_url":"https://github.com/gregwjacobs/PyGithub","private":false,"id":5629305,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/gregwjacobs/PyGithub","pushed_at":"2012-08-23T07:38:20Z"}] + +https GET api.github.com None /user/subscriptions/nvie/gitflow {'Authorization': 'Basic login_and_password_removed'} null +204 +[('status', '204 No Content'), ('x-ratelimit-remaining', '4941'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('cache-control', ''), ('date', 'Fri, 07 Sep 2012 23:53:23 GMT')] + + +https DELETE api.github.com None /user/subscriptions/nvie/gitflow {'Authorization': 'Basic login_and_password_removed'} null +204 +[('status', '204 No Content'), ('x-ratelimit-remaining', '4940'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('cache-control', ''), ('date', 'Fri, 07 Sep 2012 23:53:24 GMT')] + + +https GET api.github.com None /user/subscriptions/nvie/gitflow {'Authorization': 'Basic login_and_password_removed'} null +404 +[('status', '404 Not Found'), ('content-length', '23'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('x-ratelimit-remaining', '4939'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('cache-control', ''), ('date', 'Fri, 07 Sep 2012 23:53:24 GMT'), ('content-type', 'application/json; charset=utf-8')] +{"message":"Not Found"} + +https PUT api.github.com None /user/subscriptions/nvie/gitflow {'Authorization': 'Basic login_and_password_removed'} null +204 +[('status', '204 No Content'), ('x-ratelimit-remaining', '4938'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('cache-control', ''), ('date', 'Fri, 07 Sep 2012 23:53:25 GMT')] + + +https GET api.github.com None /user/subscriptions/nvie/gitflow {'Authorization': 'Basic login_and_password_removed'} null +204 +[('status', '204 No Content'), ('x-ratelimit-remaining', '4937'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('cache-control', ''), ('date', 'Fri, 07 Sep 2012 23:53:25 GMT')] + + diff --git a/test/ReplayData/NamedUser.testGetSubscriptions.txt b/test/ReplayData/NamedUser.testGetSubscriptions.txt new file mode 100644 index 00000000..989f13ad --- /dev/null +++ b/test/ReplayData/NamedUser.testGetSubscriptions.txt @@ -0,0 +1,5 @@ +https GET api.github.com None /users/jacquev6/subscriptions {'Authorization': 'Basic login_and_password_removed'} null +200 +[('status', '200 OK'), ('x-ratelimit-remaining', '4954'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('content-length', '35676'), ('server', 'nginx/1.0.13'), ('last-modified', 'Fri, 07 Sep 2012 23:16:45 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"400673f9e225530be2f6795b43862773"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 07 Sep 2012 23:49:10 GMT'), ('content-type', 'application/json; charset=utf-8')] +[{"master_branch":"master","forks":1,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"Vincent's Development Environment","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/ViDE.git","git_url":"git://github.com/jacquev6/ViDE.git","created_at":null,"has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":1496,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-06-08T11:05:51Z","full_name":"jacquev6/ViDE","name":"ViDE","url":"https://api.github.com/repos/jacquev6/ViDE","mirror_url":null,"ssh_url":"git@github.com:jacquev6/ViDE.git","html_url":"https://github.com/jacquev6/ViDE","private":false,"id":767343,"language":"Python","homepage":"","svn_url":"https://github.com/jacquev6/ViDE","pushed_at":"2012-06-08T11:05:51Z"},{"master_branch":"master","forks":1,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/Boost.HierarchicalEnum.git","git_url":"git://github.com/jacquev6/Boost.HierarchicalEnum.git","created_at":"2012-08-07T03:23:22Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":112,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-07-27T02:32:15Z","full_name":"jacquev6/Boost.HierarchicalEnum","name":"Boost.HierarchicalEnum","url":"https://api.github.com/repos/jacquev6/Boost.HierarchicalEnum","mirror_url":null,"ssh_url":"git@github.com:jacquev6/Boost.HierarchicalEnum.git","html_url":"https://github.com/jacquev6/Boost.HierarchicalEnum","private":false,"id":767382,"language":"C++","homepage":"","svn_url":"https://github.com/jacquev6/Boost.HierarchicalEnum","pushed_at":"2011-11-27T14:00:23Z"},{"master_branch":"master","forks":1,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"A C++ interface to specify quadratic problems by C++ expressions of your variables. Try it online.","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/QuadProgMm.git","git_url":"git://github.com/jacquev6/QuadProgMm.git","created_at":null,"has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":760,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-04-16T18:39:06Z","full_name":"jacquev6/QuadProgMm","name":"QuadProgMm","url":"https://api.github.com/repos/jacquev6/QuadProgMm","mirror_url":null,"ssh_url":"git@github.com:jacquev6/QuadProgMm.git","html_url":"https://github.com/jacquev6/QuadProgMm","private":false,"id":767386,"language":"C++","homepage":"http://vincent-jacques.net/QuadProgMm","svn_url":"https://github.com/jacquev6/QuadProgMm","pushed_at":"2012-04-16T18:39:05Z"},{"master_branch":"master","forks":1,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"Draw syntax diagrams from EBNF grammars. API in C++ and Python. Try it online.","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/DrawSyntax.git","git_url":"git://github.com/jacquev6/DrawSyntax.git","created_at":"2012-08-07T03:23:17Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":1760,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-08-11T03:53:58Z","full_name":"jacquev6/DrawSyntax","name":"DrawSyntax","url":"https://api.github.com/repos/jacquev6/DrawSyntax","mirror_url":null,"ssh_url":"git@github.com:jacquev6/DrawSyntax.git","html_url":"https://github.com/jacquev6/DrawSyntax","private":false,"id":767392,"language":"C++","homepage":"http://vincent-jacques.net/DrawSyntax/","svn_url":"https://github.com/jacquev6/DrawSyntax","pushed_at":"2011-11-27T14:00:32Z"},{"master_branch":"master","forks":1,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"A tool to draw Turk's Head Knots. Try it online","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/DrawTurksHead.git","git_url":"git://github.com/jacquev6/DrawTurksHead.git","created_at":"2012-08-07T03:23:13Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":3232,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-04-16T18:38:55Z","full_name":"jacquev6/DrawTurksHead","name":"DrawTurksHead","url":"https://api.github.com/repos/jacquev6/DrawTurksHead","mirror_url":null,"ssh_url":"git@github.com:jacquev6/DrawTurksHead.git","html_url":"https://github.com/jacquev6/DrawTurksHead","private":false,"id":767403,"language":"C++","homepage":"http://vincent-jacques.net/DrawTurksHead/","svn_url":"https://github.com/jacquev6/DrawTurksHead","pushed_at":"2012-04-16T18:38:54Z"},{"forks":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/PrivateStuff.git","git_url":"git://github.com/jacquev6/PrivateStuff.git","created_at":null,"has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":1252,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-09-07T19:22:17Z","full_name":"jacquev6/PrivateStuff","name":"PrivateStuff","url":"https://api.github.com/repos/jacquev6/PrivateStuff","mirror_url":null,"ssh_url":"git@github.com:jacquev6/PrivateStuff.git","html_url":"https://github.com/jacquev6/PrivateStuff","private":true,"id":1592290,"language":"Python","homepage":"","svn_url":"https://github.com/jacquev6/PrivateStuff","pushed_at":"2012-09-07T19:21:59Z"},{"forks":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/vincent-jacques.net.git","git_url":"git://github.com/jacquev6/vincent-jacques.net.git","created_at":null,"has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":164,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-06-30T09:29:07Z","full_name":"jacquev6/vincent-jacques.net","name":"vincent-jacques.net","url":"https://api.github.com/repos/jacquev6/vincent-jacques.net","mirror_url":null,"ssh_url":"git@github.com:jacquev6/vincent-jacques.net.git","html_url":"https://github.com/jacquev6/vincent-jacques.net","private":true,"id":1986874,"language":"Python","homepage":"vincent-jacques.net","svn_url":"https://github.com/jacquev6/vincent-jacques.net","pushed_at":"2012-06-30T09:29:07Z"},{"forks":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/Hacking.git","git_url":"git://github.com/jacquev6/Hacking.git","created_at":"2012-08-07T03:23:13Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":148,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-09-07T20:42:54Z","full_name":"jacquev6/Hacking","name":"Hacking","url":"https://api.github.com/repos/jacquev6/Hacking","mirror_url":null,"ssh_url":"git@github.com:jacquev6/Hacking.git","html_url":"https://github.com/jacquev6/Hacking","private":true,"id":1988081,"language":"Python","homepage":"","svn_url":"https://github.com/jacquev6/Hacking","pushed_at":"2012-09-07T20:42:54Z"},{"forks":1,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"Caesar IV: anticipate your city","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/C4Planner.git","git_url":"git://github.com/jacquev6/C4Planner.git","created_at":"2012-08-07T03:23:20Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":4716,"fork":false,"open_issues":0,"has_issues":false,"updated_at":"2012-07-27T04:29:14Z","full_name":"jacquev6/C4Planner","name":"C4Planner","url":"https://api.github.com/repos/jacquev6/C4Planner","mirror_url":null,"ssh_url":"git@github.com:jacquev6/C4Planner.git","html_url":"https://github.com/jacquev6/C4Planner","private":false,"id":2260441,"language":"Python","homepage":"http://vincent-jacques.net/C4Planner","svn_url":"https://github.com/jacquev6/C4Planner","pushed_at":"2011-11-27T20:51:06Z"},{"forks":0,"has_downloads":false,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/developer.github.com.git","git_url":"git://github.com/jacquev6/developer.github.com.git","created_at":null,"has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":184,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-06-05T11:35:40Z","full_name":"jacquev6/developer.github.com","name":"developer.github.com","url":"https://api.github.com/repos/jacquev6/developer.github.com","mirror_url":null,"ssh_url":"git@github.com:jacquev6/developer.github.com.git","html_url":"https://github.com/jacquev6/developer.github.com","private":false,"id":3361136,"language":"Ruby","homepage":"","svn_url":"https://github.com/jacquev6/developer.github.com","pushed_at":"2012-06-05T11:35:40Z"},{"forks":16,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":true,"admin":true},"forks_count":16,"clone_url":"https://github.com/jacquev6/PyGithub.git","git_url":"git://github.com/jacquev6/PyGithub.git","created_at":null,"has_wiki":false,"watchers_count":67,"watchers":67,"open_issues_count":13,"size":228,"fork":false,"open_issues":13,"has_issues":true,"updated_at":"2012-09-07T23:16:45Z","full_name":"jacquev6/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/jacquev6/PyGithub","mirror_url":null,"ssh_url":"git@github.com:jacquev6/PyGithub.git","html_url":"https://github.com/jacquev6/PyGithub","private":false,"id":3544490,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/jacquev6/PyGithub","pushed_at":"2012-09-07T23:16:45Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"b2e096f2c016d8dc168a3a5e6281b07a","login":"abersager","avatar_url":"https://secure.gravatar.com/avatar/b2e096f2c016d8dc168a3a5e6281b07a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/abersager","id":1328351},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/abersager/PyGithub.git","git_url":"git://github.com/abersager/PyGithub.git","created_at":"2012-08-07T03:21:09Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:19Z","full_name":"abersager/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/abersager/PyGithub","mirror_url":null,"ssh_url":"git@github.com:abersager/PyGithub.git","html_url":"https://github.com/abersager/PyGithub","private":false,"id":3831162,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/abersager/PyGithub","pushed_at":"2012-03-26T10:05:31Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"The Web framework for perfectionists with deadlines. Now on GitHub.","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/django.git","git_url":"git://github.com/jacquev6/django.git","created_at":null,"has_wiki":false,"watchers_count":2,"watchers":2,"open_issues_count":0,"size":48476,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-06-09T10:37:50Z","full_name":"jacquev6/django","name":"django","url":"https://api.github.com/repos/jacquev6/django","mirror_url":null,"ssh_url":"git@github.com:jacquev6/django.git","html_url":"https://github.com/jacquev6/django","private":false,"id":4166730,"language":"Python","homepage":"http://www.djangoproject.com/","svn_url":"https://github.com/jacquev6/django","pushed_at":"2012-04-28T04:05:15Z"},{"forks":1,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"Un outil pour ceux qui aiment voir plusieurs films le même jour","permissions":{"pull":true,"push":true,"admin":true},"forks_count":1,"clone_url":"https://github.com/jacquev6/CinePlanning.git","git_url":"git://github.com/jacquev6/CinePlanning.git","created_at":"2012-08-07T03:23:19Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":5,"size":240,"fork":false,"open_issues":5,"has_issues":true,"updated_at":"2012-06-17T05:55:59Z","full_name":"jacquev6/CinePlanning","name":"CinePlanning","url":"https://api.github.com/repos/jacquev6/CinePlanning","mirror_url":null,"ssh_url":"git@github.com:jacquev6/CinePlanning.git","html_url":"https://github.com/jacquev6/CinePlanning","private":false,"id":4627544,"language":"Python","homepage":"http://vincent-jacques.net/CinePlanning","svn_url":"https://github.com/jacquev6/CinePlanning","pushed_at":"2012-06-17T05:55:58Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"3aa27c0add742f542848af3b8a9e980c","login":"pmuilu","avatar_url":"https://secure.gravatar.com/avatar/3aa27c0add742f542848af3b8a9e980c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/pmuilu","id":691799},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/pmuilu/PyGithub.git","git_url":"git://github.com/pmuilu/PyGithub.git","created_at":"2012-08-07T03:21:41Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:44Z","full_name":"pmuilu/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/pmuilu/PyGithub","mirror_url":null,"ssh_url":"git@github.com:pmuilu/PyGithub.git","html_url":"https://github.com/pmuilu/PyGithub","private":false,"id":4716322,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/pmuilu/PyGithub","pushed_at":"2012-06-19T16:50:37Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"85203b21c562062e5641f0b8d4b98d9b","login":"herlo","avatar_url":"https://secure.gravatar.com/avatar/85203b21c562062e5641f0b8d4b98d9b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/herlo","id":89334},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/herlo/PyGithub.git","git_url":"git://github.com/herlo/PyGithub.git","created_at":"2012-08-07T03:21:47Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":164,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:47Z","full_name":"herlo/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/herlo/PyGithub","mirror_url":null,"ssh_url":"git@github.com:herlo/PyGithub.git","html_url":"https://github.com/herlo/PyGithub","private":false,"id":4720987,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/herlo/PyGithub","pushed_at":"2012-06-13T10:57:26Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"3ceac58506711008b9e93ad31fcb0f45","login":"roverdotcom","avatar_url":"https://secure.gravatar.com/avatar/3ceac58506711008b9e93ad31fcb0f45?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png","url":"https://api.github.com/users/roverdotcom","id":1463288},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/roverdotcom/PyGithub.git","git_url":"git://github.com/roverdotcom/PyGithub.git","created_at":"2012-08-07T03:21:50Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":116,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:51Z","full_name":"roverdotcom/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/roverdotcom/PyGithub","mirror_url":null,"ssh_url":"git@github.com:roverdotcom/PyGithub.git","html_url":"https://github.com/roverdotcom/PyGithub","private":false,"id":4785693,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/roverdotcom/PyGithub","pushed_at":"2012-06-25T18:44:19Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","login":"jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jacquev6","id":327146},"description":"HTML5 browsable IP map inspired by http://xkcd.com/195/","permissions":{"pull":true,"push":true,"admin":true},"forks_count":0,"clone_url":"https://github.com/jacquev6/IpMap.git","git_url":"git://github.com/jacquev6/IpMap.git","created_at":null,"has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":2,"size":136,"fork":false,"open_issues":2,"has_issues":true,"updated_at":"2012-08-06T20:40:59Z","full_name":"jacquev6/IpMap","name":"IpMap","url":"https://api.github.com/repos/jacquev6/IpMap","mirror_url":null,"ssh_url":"git@github.com:jacquev6/IpMap.git","html_url":"https://github.com/jacquev6/IpMap","private":true,"id":4835930,"language":"JavaScript","homepage":"http://vincent-jacques.net/IpMap","svn_url":"https://github.com/jacquev6/IpMap","pushed_at":"2012-06-30T09:28:28Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"433a7fa3917a38691aa9914b61444875","login":"thouis","avatar_url":"https://secure.gravatar.com/avatar/433a7fa3917a38691aa9914b61444875?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/thouis","id":473043},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/thouis/PyGithub.git","git_url":"git://github.com/thouis/PyGithub.git","created_at":"2012-08-07T03:21:53Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:54Z","full_name":"thouis/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/thouis/PyGithub","mirror_url":null,"ssh_url":"git@github.com:thouis/PyGithub.git","html_url":"https://github.com/thouis/PyGithub","private":false,"id":4957672,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/thouis/PyGithub","pushed_at":"2012-07-09T12:42:19Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"13a30f9924fa2bd918cbb8d06dd8b55a","login":"malexw","avatar_url":"https://secure.gravatar.com/avatar/13a30f9924fa2bd918cbb8d06dd8b55a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/malexw","id":577322},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/malexw/PyGithub.git","git_url":"git://github.com/malexw/PyGithub.git","created_at":"2012-08-07T03:21:56Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":112,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:21:57Z","full_name":"malexw/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/malexw/PyGithub","mirror_url":null,"ssh_url":"git@github.com:malexw/PyGithub.git","html_url":"https://github.com/malexw/PyGithub","private":false,"id":4992915,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/malexw/PyGithub","pushed_at":"2012-07-11T18:11:24Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"37a932b3abe212892173784736ed6b12","login":"engie","avatar_url":"https://secure.gravatar.com/avatar/37a932b3abe212892173784736ed6b12?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/engie","id":1247},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/engie/PyGithub.git","git_url":"git://github.com/engie/PyGithub.git","created_at":"2012-08-07T03:21:59Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":136,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:22:00Z","full_name":"engie/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/engie/PyGithub","mirror_url":null,"ssh_url":"git@github.com:engie/PyGithub.git","html_url":"https://github.com/engie/PyGithub","private":false,"id":5153069,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/engie/PyGithub","pushed_at":"2012-07-23T16:42:58Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"ffcbd195c843b902fcdaa9986a2a0116","login":"oangeor","avatar_url":"https://secure.gravatar.com/avatar/ffcbd195c843b902fcdaa9986a2a0116?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/oangeor","id":1707945},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/oangeor/PyGithub.git","git_url":"git://github.com/oangeor/PyGithub.git","created_at":"2012-08-07T03:22:03Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":1292,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-06T20:22:04Z","full_name":"oangeor/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/oangeor/PyGithub","mirror_url":null,"ssh_url":"git@github.com:oangeor/PyGithub.git","html_url":"https://github.com/oangeor/PyGithub","private":false,"id":5190054,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/oangeor/PyGithub","pushed_at":"2012-07-24T16:19:13Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"a62c07aeefe3d9cc2ba18861f7eeef7d","login":"alejo8591","avatar_url":"https://secure.gravatar.com/avatar/a62c07aeefe3d9cc2ba18861f7eeef7d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/alejo8591","id":1151850},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/alejo8591/PyGithub.git","git_url":"git://github.com/alejo8591/PyGithub.git","created_at":"2012-08-07T03:22:07Z","has_wiki":false,"watchers_count":1,"watchers":1,"open_issues_count":0,"size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-04T07:01:31Z","full_name":"alejo8591/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/alejo8591/PyGithub","mirror_url":null,"ssh_url":"git@github.com:alejo8591/PyGithub.git","html_url":"https://github.com/alejo8591/PyGithub","private":false,"id":5293768,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/alejo8591/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"92a24b96be9d9ce5e608751cc0c95823","login":"jagster02","avatar_url":"https://secure.gravatar.com/avatar/92a24b96be9d9ce5e608751cc0c95823?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/jagster02","id":1383412},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/jagster02/PyGithub.git","git_url":"git://github.com/jagster02/PyGithub.git","created_at":"2012-08-09T13:55:23Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-07T23:29:19Z","full_name":"jagster02/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/jagster02/PyGithub","mirror_url":null,"ssh_url":"git@github.com:jagster02/PyGithub.git","html_url":"https://github.com/jagster02/PyGithub","private":false,"id":5334906,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/jagster02/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"01f9109a647ef1dac0198da94d5dfc35","login":"cs2ctest","avatar_url":"https://secure.gravatar.com/avatar/01f9109a647ef1dac0198da94d5dfc35?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/cs2ctest","id":2108297},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/cs2ctest/PyGithub.git","git_url":"git://github.com/cs2ctest/PyGithub.git","created_at":"2012-08-09T19:56:03Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-09T09:00:55Z","full_name":"cs2ctest/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/cs2ctest/PyGithub","mirror_url":null,"ssh_url":"git@github.com:cs2ctest/PyGithub.git","html_url":"https://github.com/cs2ctest/PyGithub","private":false,"id":5353371,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/cs2ctest/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"83fdd59f80118ac8e56fd6f732239190","login":"feiying","avatar_url":"https://secure.gravatar.com/avatar/83fdd59f80118ac8e56fd6f732239190?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/feiying","id":1784180},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/feiying/PyGithub.git","git_url":"git://github.com/feiying/PyGithub.git","created_at":"2012-08-10T18:57:02Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-10T04:51:27Z","full_name":"feiying/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/feiying/PyGithub","mirror_url":null,"ssh_url":"git@github.com:feiying/PyGithub.git","html_url":"https://github.com/feiying/PyGithub","private":false,"id":5365056,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/feiying/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"13df3b204a5708ed557a07628ea00660","login":"tdcarrol","avatar_url":"https://secure.gravatar.com/avatar/13df3b204a5708ed557a07628ea00660?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/tdcarrol","id":435947},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/tdcarrol/PyGithub.git","git_url":"git://github.com/tdcarrol/PyGithub.git","created_at":"2012-08-22T05:17:05Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":216,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-21T15:14:27Z","full_name":"tdcarrol/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/tdcarrol/PyGithub","mirror_url":null,"ssh_url":"git@github.com:tdcarrol/PyGithub.git","html_url":"https://github.com/tdcarrol/PyGithub","private":false,"id":5496795,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/tdcarrol/PyGithub","pushed_at":"2012-08-04T06:06:06Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"ae8a2af3de601885a14bb71240e5d1a6","login":"xobb1t","avatar_url":"https://secure.gravatar.com/avatar/ae8a2af3de601885a14bb71240e5d1a6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/xobb1t","id":344095},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/xobb1t/PyGithub.git","git_url":"git://github.com/xobb1t/PyGithub.git","created_at":"2012-09-03T15:31:32Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":108,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-25T19:40:53Z","full_name":"xobb1t/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/xobb1t/PyGithub","mirror_url":null,"ssh_url":"git@github.com:xobb1t/PyGithub.git","html_url":"https://github.com/xobb1t/PyGithub","private":false,"id":5554026,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/xobb1t/PyGithub","pushed_at":"2012-08-25T19:40:53Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"ad620f78a113948d4ded151e3025a3b3","login":"braincorp","avatar_url":"https://secure.gravatar.com/avatar/ad620f78a113948d4ded151e3025a3b3?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png","url":"https://api.github.com/users/braincorp","id":2085477},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/braincorp/PyGithub.git","git_url":"git://github.com/braincorp/PyGithub.git","created_at":"2012-09-03T15:31:30Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":240,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-30T06:54:52Z","full_name":"braincorp/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/braincorp/PyGithub","mirror_url":null,"ssh_url":"git@github.com:braincorp/PyGithub.git","html_url":"https://github.com/braincorp/PyGithub","private":false,"id":5611539,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/braincorp/PyGithub","pushed_at":"2012-08-23T07:38:20Z"},{"forks":0,"has_downloads":true,"owner":{"gravatar_id":"8707d63a44f6cc04e58a655f3df3105c","login":"gregwjacobs","avatar_url":"https://secure.gravatar.com/avatar/8707d63a44f6cc04e58a655f3df3105c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","url":"https://api.github.com/users/gregwjacobs","id":1749292},"description":"Python library implementing the full Github API v3","permissions":{"pull":true,"push":false,"admin":false},"forks_count":0,"clone_url":"https://github.com/gregwjacobs/PyGithub.git","git_url":"git://github.com/gregwjacobs/PyGithub.git","created_at":"2012-09-03T15:31:27Z","has_wiki":false,"watchers_count":0,"watchers":0,"open_issues_count":0,"size":240,"fork":true,"open_issues":0,"has_issues":false,"updated_at":"2012-08-31T13:53:17Z","full_name":"gregwjacobs/PyGithub","name":"PyGithub","url":"https://api.github.com/repos/gregwjacobs/PyGithub","mirror_url":null,"ssh_url":"git@github.com:gregwjacobs/PyGithub.git","html_url":"https://github.com/gregwjacobs/PyGithub","private":false,"id":5629305,"language":"Python","homepage":"http://vincent-jacques.net/PyGithub","svn_url":"https://github.com/gregwjacobs/PyGithub","pushed_at":"2012-08-23T07:38:20Z"}] + diff --git a/test/ReplayData/Repository.testGetSubscribers.txt b/test/ReplayData/Repository.testGetSubscribers.txt new file mode 100644 index 00000000..b3821cde --- /dev/null +++ b/test/ReplayData/Repository.testGetSubscribers.txt @@ -0,0 +1,5 @@ +https GET api.github.com None /repos/jacquev6/PyGithub/subscribers {'Authorization': 'Basic login_and_password_removed'} null +200 +[('status', '200 OK'), ('content-length', '3327'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('x-ratelimit-remaining', '4956'), ('server', 'nginx/1.0.13'), ('last-modified', 'Fri, 07 Sep 2012 12:01:21 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"ab16ed4c5e852882d2d1a3887c3cb606"'), ('cache-control', 'private, s-maxage=60, max-age=60'), ('date', 'Fri, 07 Sep 2012 23:46:43 GMT'), ('content-type', 'application/json; charset=utf-8')] +[{"gravatar_id":"b68de5ae38616c296fa345d2b9df2225","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"jacquev6","url":"https://api.github.com/users/jacquev6","id":327146},{"gravatar_id":"e8f8081fe45c1b793c288ecd1c1e932e","avatar_url":"https://secure.gravatar.com/avatar/e8f8081fe45c1b793c288ecd1c1e932e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"equus12","url":"https://api.github.com/users/equus12","id":1647505},{"gravatar_id":"2aed663a62fa8bf9f7aebe603d3998bb","avatar_url":"https://secure.gravatar.com/avatar/2aed663a62fa8bf9f7aebe603d3998bb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"bilderbuchi","url":"https://api.github.com/users/bilderbuchi","id":327442},{"gravatar_id":"4a70a247b4f222894f6b9861e40f733d","avatar_url":"https://secure.gravatar.com/avatar/4a70a247b4f222894f6b9861e40f733d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"hcilab","url":"https://api.github.com/users/hcilab","id":1610572},{"gravatar_id":"abd8a1f2aa5d4899129458889b6f315b","avatar_url":"https://secure.gravatar.com/avatar/abd8a1f2aa5d4899129458889b6f315b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"hattya","url":"https://api.github.com/users/hattya","id":839237},{"gravatar_id":"0e5246dc215484496d9ba125c1142716","avatar_url":"https://secure.gravatar.com/avatar/0e5246dc215484496d9ba125c1142716?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"firstthumb","url":"https://api.github.com/users/firstthumb","id":66023},{"gravatar_id":"8707d63a44f6cc04e58a655f3df3105c","avatar_url":"https://secure.gravatar.com/avatar/8707d63a44f6cc04e58a655f3df3105c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"gregwjacobs","url":"https://api.github.com/users/gregwjacobs","id":1749292},{"gravatar_id":"bb0e7d8e63591b6b908a5a21b3e75878","avatar_url":"https://secure.gravatar.com/avatar/bb0e7d8e63591b6b908a5a21b3e75878?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"sagarsane","url":"https://api.github.com/users/sagarsane","id":667114},{"gravatar_id":"bf75ed46f2034fe6cc1075ce888084d8","avatar_url":"https://secure.gravatar.com/avatar/bf75ed46f2034fe6cc1075ce888084d8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"liang456","url":"https://api.github.com/users/liang456","id":1673318},{"gravatar_id":"3a90a2072fa32035016c5cc3c8584367","avatar_url":"https://secure.gravatar.com/avatar/3a90a2072fa32035016c5cc3c8584367?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"berndca","url":"https://api.github.com/users/berndca","id":466654},{"gravatar_id":"1517ed584458ccf83e03f5d77d9699d7","avatar_url":"https://secure.gravatar.com/avatar/1517ed584458ccf83e03f5d77d9699d7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"Lyloa","url":"https://api.github.com/users/Lyloa","id":1131432}] + diff --git a/test/Repository.py b/test/Repository.py index 0b404a59..1190ae95 100644 --- a/test/Repository.py +++ b/test/Repository.py @@ -325,6 +325,9 @@ class Repository( Framework.TestCase ): def testGetStargazers( self ): self.assertListKeyEqual( self.repo.get_stargazers(), lambda u: u.login, [ "Stals", "att14", "jardon-u", "huxley", "mikofski", "L42y", "fanzeyi", "abersager", "waylan", "adericbourg", "tallforasmurf", "pvicente", "roskakori", "michaelpedersen", "stefanfoulis", "equus12", "JuRogn", "joshmoore", "jsilter", "dasapich", "ritratt", "hcilab", "vxnick", "pmuilu", "herlo", "malexw", "ahmetvurgun", "PengGu", "cosmin", "Swop", "kennethreitz", "bryandyck", "jason2506", "zsiciarz", "waawal", "gregorynicholas", "sente", "richmiller55", "thouis", "mazubieta", "michaelhood", "engie", "jtriley", "oangeor", "coryking", "noddi", "alejo8591", "omab", "Carreau", "bilderbuchi", "schwa", "rlerallut", "PengHub", "zoek1", "xobb1t", "notgary", "hattya", "ZebtinRis", "aaronhall", "youngsterxyf", "ailling", "gregwjacobs", "n0rmrx", "awylie", "firstthumb", "joshbrand", "berndca" ] ) + def testGetSubscribers( self ): + self.assertListKeyEqual( self.repo.get_subscribers(), lambda u: u.login, [ "jacquev6", "equus12", "bilderbuchi", "hcilab", "hattya", "firstthumb", "gregwjacobs", "sagarsane", "liang456", "berndca", "Lyloa" ] ) + def testCreatePull( self ): pull = self.repo.create_pull( "Pull request created by PyGithub", "Body of the pull request", "topic/RewriteWithGeneratedCode", "BeaverSoftware:master" ) self.assertEqual( pull.id, 1436215 )