Merge branch 'topic/ApiStatus' into develop

This commit is contained in:
Vincent Jacques
2013-09-06 11:04:41 +02:00
33 changed files with 415 additions and 574 deletions
+25 -93
View File
@@ -257,9 +257,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
"/user/emails",
None,
None,
post_parameters
input=post_parameters
)
def add_to_following(self, following):
@@ -271,10 +269,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(following, github.NamedUser.NamedUser), following
headers, data = self._requester.requestJsonAndCheck(
"PUT",
"/user/following/" + following._identity,
None,
None,
None
"/user/following/" + following._identity
)
def add_to_starred(self, starred):
@@ -286,10 +281,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(starred, github.Repository.Repository), starred
headers, data = self._requester.requestJsonAndCheck(
"PUT",
"/user/starred/" + starred._identity,
None,
None,
None
"/user/starred/" + starred._identity
)
def add_to_subscriptions(self, subscription):
@@ -301,10 +293,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(subscription, github.Repository.Repository), subscription
headers, data = self._requester.requestJsonAndCheck(
"PUT",
"/user/subscriptions/" + subscription._identity,
None,
None,
None
"/user/subscriptions/" + subscription._identity
)
def add_to_watched(self, watched):
@@ -316,10 +305,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(watched, github.Repository.Repository), watched
headers, data = self._requester.requestJsonAndCheck(
"PUT",
"/user/watched/" + watched._identity,
None,
None,
None
"/user/watched/" + watched._identity
)
def create_authorization(self, scopes=github.GithubObject.NotSet, note=github.GithubObject.NotSet, note_url=github.GithubObject.NotSet, client_id=github.GithubObject.NotSet, client_secret=github.GithubObject.NotSet):
@@ -351,9 +337,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
"/authorizations",
None,
None,
post_parameters
input=post_parameters
)
return github.Authorization.Authorization(self._requester, headers, data, completed=True)
@@ -366,10 +350,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(repo, github.Repository.Repository), repo
headers, data = self._requester.requestJsonAndCheck(
"POST",
"/repos/" + repo.owner.login + "/" + repo.name + "/forks",
None,
None,
None
"/repos/" + repo.owner.login + "/" + repo.name + "/forks"
)
return github.Repository.Repository(self._requester, headers, data, completed=True)
@@ -393,9 +374,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
"/gists",
None,
None,
post_parameters
input=post_parameters
)
return github.Gist.Gist(self._requester, headers, data, completed=True)
@@ -415,9 +394,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
"/user/keys",
None,
None,
post_parameters
input=post_parameters
)
return github.UserKey.UserKey(self._requester, headers, data, completed=True)
@@ -466,9 +443,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
"/user/repos",
None,
None,
post_parameters
input=post_parameters
)
return github.Repository.Repository(self._requester, headers, data, completed=True)
@@ -509,9 +484,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
"/user",
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -524,10 +497,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/authorizations/" + str(id),
None,
None,
None
"/authorizations/" + str(id)
)
return github.Authorization.Authorization(self._requester, headers, data, completed=True)
@@ -550,10 +520,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/user/emails",
None,
None,
None
"/user/emails"
)
return data
@@ -690,10 +657,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/user/keys/" + str(id),
None,
None,
None
"/user/keys/" + str(id)
)
return github.UserKey.UserKey(self._requester, headers, data, completed=True)
@@ -718,10 +682,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (str, unicode)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/notifications/threads/" + id,
None,
None,
None
"/notifications/threads/" + id
)
return github.Notification.Notification(self._requester, headers, data, completed=True)
@@ -783,10 +744,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(name, (str, unicode)), name
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/repos/" + self.login + "/" + name,
None,
None,
None
"/repos/" + self.login + "/" + name
)
return github.Repository.Repository(self._requester, headers, data, completed=True)
@@ -872,10 +830,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(following, github.NamedUser.NamedUser), following
status, headers, data = self._requester.requestJson(
"GET",
"/user/following/" + following._identity,
None,
None,
None
"/user/following/" + following._identity
)
return status == 204
@@ -888,10 +843,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(starred, github.Repository.Repository), starred
status, headers, data = self._requester.requestJson(
"GET",
"/user/starred/" + starred._identity,
None,
None,
None
"/user/starred/" + starred._identity
)
return status == 204
@@ -904,10 +856,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(subscription, github.Repository.Repository), subscription
status, headers, data = self._requester.requestJson(
"GET",
"/user/subscriptions/" + subscription._identity,
None,
None,
None
"/user/subscriptions/" + subscription._identity
)
return status == 204
@@ -920,10 +869,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(watched, github.Repository.Repository), watched
status, headers, data = self._requester.requestJson(
"GET",
"/user/watched/" + watched._identity,
None,
None,
None
"/user/watched/" + watched._identity
)
return status == 204
@@ -938,9 +884,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
"/user/emails",
None,
None,
post_parameters
input=post_parameters
)
def remove_from_following(self, following):
@@ -952,10 +896,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(following, github.NamedUser.NamedUser), following
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
"/user/following/" + following._identity,
None,
None,
None
"/user/following/" + following._identity
)
def remove_from_starred(self, starred):
@@ -967,10 +908,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(starred, github.Repository.Repository), starred
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
"/user/starred/" + starred._identity,
None,
None,
None
"/user/starred/" + starred._identity
)
def remove_from_subscriptions(self, subscription):
@@ -982,10 +920,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(subscription, github.Repository.Repository), subscription
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
"/user/subscriptions/" + subscription._identity,
None,
None,
None
"/user/subscriptions/" + subscription._identity
)
def remove_from_watched(self, watched):
@@ -997,10 +932,7 @@ class AuthenticatedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(watched, github.Repository.Repository), watched
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
"/user/watched/" + watched._identity,
None,
None,
None
"/user/watched/" + watched._identity
)
def _initAttributes(self):
+2 -7
View File
@@ -113,10 +113,7 @@ class Authorization(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, scopes=github.GithubObject.NotSet, add_scopes=github.GithubObject.NotSet, remove_scopes=github.GithubObject.NotSet, note=github.GithubObject.NotSet, note_url=github.GithubObject.NotSet):
@@ -148,9 +145,7 @@ class Authorization(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+2 -6
View File
@@ -130,9 +130,7 @@ class Commit(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/comments",
None,
None,
post_parameters
input=post_parameters
)
return github.CommitComment.CommitComment(self._requester, headers, data, completed=True)
@@ -157,9 +155,7 @@ class Commit(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self._parentUrl(self._parentUrl(self.url)) + "/statuses/" + self.sha,
None,
None,
post_parameters
input=post_parameters
)
return github.CommitStatus.CommitStatus(self._requester, headers, data, completed=True)
+2 -7
View File
@@ -129,10 +129,7 @@ class CommitComment(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, body):
@@ -148,9 +145,7 @@ class CommitComment(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+1 -4
View File
@@ -199,10 +199,7 @@ class Download(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def _initAttributes(self):
+8 -30
View File
@@ -172,9 +172,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/comments",
None,
None,
post_parameters
input=post_parameters
)
return github.GistComment.GistComment(self._requester, headers, data, completed=True)
@@ -185,10 +183,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/forks",
None,
None,
None
self.url + "/forks"
)
return Gist(self._requester, headers, data, completed=True)
@@ -199,10 +194,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, description=github.GithubObject.NotSet, files=github.GithubObject.NotSet):
@@ -222,9 +214,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -237,10 +227,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/comments/" + str(id),
None,
None,
None
self.url + "/comments/" + str(id)
)
return github.GistComment.GistComment(self._requester, headers, data, completed=True)
@@ -263,10 +250,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
"""
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/star",
None,
None,
None
self.url + "/star"
)
return status == 204
@@ -277,10 +261,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/star",
None,
None,
None
self.url + "/star"
)
def set_starred(self):
@@ -290,10 +271,7 @@ class Gist(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/star",
None,
None,
None
self.url + "/star"
)
def _initAttributes(self):
+2 -7
View File
@@ -89,10 +89,7 @@ class GistComment(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, body):
@@ -108,9 +105,7 @@ class GistComment(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+2 -7
View File
@@ -65,10 +65,7 @@ class GitRef(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, sha, force=github.GithubObject.NotSet):
@@ -88,9 +85,7 @@ class GitRef(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+2 -7
View File
@@ -141,10 +141,7 @@ class CompletableGithubObject(GithubObject):
def __complete(self):
headers, data = self._requester.requestJsonAndCheck(
"GET",
self._url,
None,
None,
None
self._url
)
self._storeAndUseAttributes(headers, data)
self.__completed = True
@@ -163,9 +160,7 @@ class CompletableGithubObject(GithubObject):
status, responseHeaders, output = self._requester.requestJson(
"GET",
self._url,
None,
conditionalRequestHeader,
None
headers=conditionalRequestHeader
)
if status == 304:
return False
+3 -11
View File
@@ -113,10 +113,7 @@ class Hook(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, name, config, events=github.GithubObject.NotSet, add_events=github.GithubObject.NotSet, remove_events=github.GithubObject.NotSet, active=github.GithubObject.NotSet):
@@ -151,9 +148,7 @@ class Hook(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -164,10 +159,7 @@ class Hook(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/tests",
None,
None,
None
self.url + "/tests"
)
def _initAttributes(self):
+7 -24
View File
@@ -203,9 +203,7 @@ class Issue(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/labels",
None,
None,
post_parameters
input=post_parameters
)
def create_comment(self, body):
@@ -221,9 +219,7 @@ class Issue(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/comments",
None,
None,
post_parameters
input=post_parameters
)
return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)
@@ -234,10 +230,7 @@ class Issue(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/labels",
None,
None,
None
self.url + "/labels"
)
def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet, assignee=github.GithubObject.NotSet, state=github.GithubObject.NotSet, milestone=github.GithubObject.NotSet, labels=github.GithubObject.NotSet):
@@ -273,9 +266,7 @@ class Issue(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -288,10 +279,7 @@ class Issue(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self._parentUrl(self.url) + "/comments/" + str(id),
None,
None,
None
self._parentUrl(self.url) + "/comments/" + str(id)
)
return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)
@@ -340,10 +328,7 @@ class Issue(github.GithubObject.CompletableGithubObject):
assert isinstance(label, github.Label.Label), label
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/labels/" + label._identity,
None,
None,
None
self.url + "/labels/" + label._identity
)
def set_labels(self, *labels):
@@ -357,9 +342,7 @@ class Issue(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/labels",
None,
None,
post_parameters
input=post_parameters
)
@property
+2 -7
View File
@@ -98,10 +98,7 @@ class IssueComment(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, body):
@@ -117,9 +114,7 @@ class IssueComment(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+2 -7
View File
@@ -66,10 +66,7 @@ class Label(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, name, color):
@@ -88,9 +85,7 @@ class Label(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+1 -3
View File
@@ -58,9 +58,7 @@ class PaginatedList(github.PaginatedList.PaginatedListBase):
headers, data = self.__requester.requestJsonAndCheck(
"GET",
self.__url,
args,
None,
None
parameters=args
)
self.__continue = len(data[self.__key]) > 0
+55 -43
View File
@@ -40,6 +40,8 @@ import github.GithubObject
import HookDescription
import GitignoreTemplate
import Notification
import Status
import StatusMessage
DEFAULT_BASE_URL = "https://api.github.com"
@@ -109,10 +111,7 @@ class Github(object):
if limit < 0:
self.__requester.requestJsonAndCheck(
'GET',
'/rate_limit',
None,
None,
None
'/rate_limit'
)
return self.__requester.rate_limiting
@@ -125,10 +124,7 @@ class Github(object):
if self.__requester.rate_limiting_resettime == 0:
self.__requester.requestJsonAndCheck(
'GET',
'/rate_limit',
None,
None,
None
'/rate_limit'
)
return self.__requester.rate_limiting_resettime
@@ -151,10 +147,7 @@ class Github(object):
else:
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/users/" + login,
None,
None,
None
"/users/" + login
)
return github.NamedUser.NamedUser(self.__requester, headers, data, completed=True)
@@ -184,10 +177,7 @@ class Github(object):
assert isinstance(login, (str, unicode)), login
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/orgs/" + login,
None,
None,
None
"/orgs/" + login
)
return github.Organization.Organization(self.__requester, headers, data, completed=True)
@@ -199,10 +189,7 @@ class Github(object):
assert isinstance(full_name, (str, unicode)), full_name
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/repos/" + full_name,
None,
None,
None
"/repos/" + full_name
)
return Repository.Repository(self.__requester, headers, data, completed=True)
@@ -232,10 +219,7 @@ class Github(object):
assert isinstance(id, (str, unicode)), id
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/gists/" + id,
None,
None,
None
"/gists/" + id
)
return github.Gist.Gist(self.__requester, headers, data, completed=True)
@@ -295,10 +279,7 @@ class Github(object):
assert isinstance(email, (str, unicode)), email
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/legacy/user/email/" + email,
None,
None,
None
"/legacy/user/email/" + email
)
return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data["user"]), completed=False)
@@ -320,9 +301,7 @@ class Github(object):
status, headers, data = self.__requester.requestJson(
"POST",
"/markdown",
None,
None,
post_parameters
input=post_parameters
)
return data
@@ -333,10 +312,7 @@ class Github(object):
"""
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/hooks",
None,
None,
None
"/hooks"
)
return [HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) for attributes in data]
@@ -347,10 +323,7 @@ class Github(object):
"""
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/gitignore/templates",
None,
None,
None
"/gitignore/templates"
)
return data
@@ -362,10 +335,7 @@ class Github(object):
assert isinstance(name, (str, unicode)), name
headers, attributes = self.__requester.requestJsonAndCheck(
"GET",
"/gitignore/templates/" + name,
None,
None,
None
"/gitignore/templates/" + name
)
return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True)
@@ -401,3 +371,45 @@ class Github(object):
:return: the unpickled object
"""
return self.create_from_raw_data(*pickle.load(f))
def get_api_status(self):
"""
This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.
:calls: `GET /api/status.json <https://status.github.com/api>`_
:rtype: :class:`github.Status.Status`
"""
headers, attributes = self.__requester.requestJsonAndCheck(
"GET",
"/api/status.json",
cnx="status"
)
return Status.Status(self.__requester, headers, attributes, completed=True)
def get_last_api_status_message(self):
"""
This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.
:calls: `GET /api/last-message.json <https://status.github.com/api>`_
:rtype: :class:`github.StatusMessage.StatusMessage`
"""
headers, attributes = self.__requester.requestJsonAndCheck(
"GET",
"/api/last-message.json",
cnx="status"
)
return StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True)
def get_api_status_messages(self):
"""
This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.
:calls: `GET /api/messages.json <https://status.github.com/api>`_
:rtype: list of :class:`github.StatusMessage.StatusMessage`
"""
headers, data = self.__requester.requestJsonAndCheck(
"GET",
"/api/messages.json",
cnx="status"
)
return [StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True) for attributes in data]
+2 -7
View File
@@ -134,10 +134,7 @@ class Milestone(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, title, state=github.GithubObject.NotSet, description=github.GithubObject.NotSet, due_on=github.GithubObject.NotSet):
@@ -165,9 +162,7 @@ class Milestone(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+3 -11
View File
@@ -269,9 +269,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/gists",
None,
None,
post_parameters
input=post_parameters
)
return github.Gist.Gist(self._requester, headers, data, completed=True)
@@ -392,10 +390,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(name, (str, unicode)), name
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/repos/" + self.login + "/" + name,
None,
None,
None
"/repos/" + self.login + "/" + name
)
return github.Repository.Repository(self._requester, headers, data, completed=True)
@@ -461,10 +456,7 @@ class NamedUser(github.GithubObject.CompletableGithubObject):
assert isinstance(following, github.NamedUser.NamedUser), following
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/following/" + following._identity,
None,
None,
None
self.url + "/following/" + following._identity
)
return status == 204
+11 -40
View File
@@ -244,10 +244,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
assert isinstance(public_member, github.NamedUser.NamedUser), public_member
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/public_members/" + public_member._identity,
None,
None,
None
self.url + "/public_members/" + public_member._identity
)
def create_fork(self, repo):
@@ -263,9 +260,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
"/repos/" + repo.owner.login + "/" + repo.name + "/forks",
url_parameters,
None,
None
parameters=url_parameters
)
return github.Repository.Repository(self._requester, headers, data, completed=True)
@@ -318,9 +313,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/repos",
None,
None,
post_parameters
input=post_parameters
)
return github.Repository.Repository(self._requester, headers, data, completed=True)
@@ -345,9 +338,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/teams",
None,
None,
post_parameters
input=post_parameters
)
return github.Team.Team(self._requester, headers, data, completed=True)
@@ -384,9 +375,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -473,10 +462,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
assert isinstance(name, (str, unicode)), name
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/repos/" + self.login + "/" + name,
None,
None,
None
"/repos/" + self.login + "/" + name
)
return github.Repository.Repository(self._requester, headers, data, completed=True)
@@ -506,10 +492,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/teams/" + str(id),
None,
None,
None
"/teams/" + str(id)
)
return github.Team.Team(self._requester, headers, data, completed=True)
@@ -534,10 +517,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
assert isinstance(member, github.NamedUser.NamedUser), member
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/members/" + member._identity,
None,
None,
None
self.url + "/members/" + member._identity
)
return status == 204
@@ -550,10 +530,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
assert isinstance(public_member, github.NamedUser.NamedUser), public_member
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/public_members/" + public_member._identity,
None,
None,
None
self.url + "/public_members/" + public_member._identity
)
return status == 204
@@ -566,10 +543,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
assert isinstance(member, github.NamedUser.NamedUser), member
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/members/" + member._identity,
None,
None,
None
self.url + "/members/" + member._identity
)
def remove_from_public_members(self, public_member):
@@ -581,10 +555,7 @@ class Organization(github.GithubObject.CompletableGithubObject):
assert isinstance(public_member, github.NamedUser.NamedUser), public_member
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/public_members/" + public_member._identity,
None,
None,
None
self.url + "/public_members/" + public_member._identity
)
def _initAttributes(self):
+3 -9
View File
@@ -122,9 +122,7 @@ class PaginatedList(PaginatedListBase):
headers, data = self.__requester.requestJsonAndCheck(
"GET",
self.__firstUrl,
self.__nextParams,
None,
None
parameters=self.__nextParams
)
links = self.__parseLinkHeader(headers)
lastUrl = links.get("last")
@@ -149,9 +147,7 @@ class PaginatedList(PaginatedListBase):
headers, data = self.__requester.requestJsonAndCheck(
"GET",
self.__nextUrl,
self.__nextParams,
None,
None
parameters=self.__nextParams
)
self.__nextUrl = None
@@ -192,9 +188,7 @@ class PaginatedList(PaginatedListBase):
headers, data = self.__requester.requestJsonAndCheck(
"GET",
self.__firstUrl,
params,
None,
None
parameters=params
)
return [
+7 -24
View File
@@ -292,9 +292,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/comments",
None,
None,
post_parameters
input=post_parameters
)
return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True)
@@ -311,9 +309,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self._parentUrl(self._parentUrl(self.url)) + "/issues/" + str(self.number) + "/comments",
None,
None,
post_parameters
input=post_parameters
)
return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)
@@ -338,9 +334,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -361,10 +355,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self._parentUrl(self.url) + "/comments/" + str(id),
None,
None,
None
self._parentUrl(self.url) + "/comments/" + str(id)
)
return github.PullRequestComment.PullRequestComment(self._requester, headers, data, completed=True)
@@ -420,10 +411,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self._parentUrl(self._parentUrl(self.url)) + "/issues/comments/" + str(id),
None,
None,
None
self._parentUrl(self._parentUrl(self.url)) + "/issues/comments/" + str(id)
)
return github.IssueComment.IssueComment(self._requester, headers, data, completed=True)
@@ -446,10 +434,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject):
"""
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/merge",
None,
None,
None
self.url + "/merge"
)
return status == 204
@@ -466,9 +451,7 @@ class PullRequest(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/merge",
None,
None,
post_parameters
input=post_parameters
)
return github.PullRequestMergeStatus.PullRequestMergeStatus(self._requester, headers, data, completed=True)
+2 -7
View File
@@ -139,10 +139,7 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, body):
@@ -158,9 +155,7 @@ class PullRequestComment(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+44 -156
View File
@@ -317,10 +317,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/collaborators/" + collaborator._identity,
None,
None,
None
self.url + "/collaborators/" + collaborator._identity
)
def compare(self, base, head):
@@ -334,10 +331,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(head, (str, unicode)), head
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/compare/" + base + "..." + head,
None,
None,
None
self.url + "/compare/" + base + "..." + head
)
return github.Comparison.Comparison(self._requester, headers, data, completed=True)
@@ -365,9 +359,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/downloads",
None,
None,
post_parameters
input=post_parameters
)
return github.Download.Download(self._requester, headers, data, completed=True)
@@ -387,9 +379,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/blobs",
None,
None,
post_parameters
input=post_parameters
)
return github.GitBlob.GitBlob(self._requester, headers, data, completed=True)
@@ -420,9 +410,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/commits",
None,
None,
post_parameters
input=post_parameters
)
return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)
@@ -442,9 +430,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/refs",
None,
None,
post_parameters
input=post_parameters
)
return github.GitRef.GitRef(self._requester, headers, data, completed=True)
@@ -474,9 +460,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/tags",
None,
None,
post_parameters
input=post_parameters
)
return github.GitTag.GitTag(self._requester, headers, data, completed=True)
@@ -497,9 +481,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/git/trees",
None,
None,
post_parameters
input=post_parameters
)
return github.GitTree.GitTree(self._requester, headers, data, completed=True)
@@ -527,9 +509,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/hooks",
None,
None,
post_parameters
input=post_parameters
)
return github.Hook.Hook(self._requester, headers, data, completed=True)
@@ -562,9 +542,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/issues",
None,
None,
post_parameters
input=post_parameters
)
return github.Issue.Issue(self._requester, headers, data, completed=True)
@@ -584,9 +562,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/keys",
None,
None,
post_parameters
input=post_parameters
)
return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url)
@@ -606,9 +582,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/labels",
None,
None,
post_parameters
input=post_parameters
)
return github.Label.Label(self._requester, headers, data, completed=True)
@@ -637,9 +611,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/milestones",
None,
None,
post_parameters
input=post_parameters
)
return github.Milestone.Milestone(self._requester, headers, data, completed=True)
@@ -676,9 +648,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/pulls",
None,
None,
post_parameters
input=post_parameters
)
return github.PullRequest.PullRequest(self._requester, headers, data, completed=True)
@@ -689,10 +659,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, name, description=github.GithubObject.NotSet, homepage=github.GithubObject.NotSet, public=github.GithubObject.NotSet, has_issues=github.GithubObject.NotSet, has_wiki=github.GithubObject.NotSet, has_downloads=github.GithubObject.NotSet, default_branch=github.GithubObject.NotSet):
@@ -736,9 +703,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -756,10 +721,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
url += "/" + ref
headers, data = self._requester.requestJsonAndCheck(
"GET",
url,
None,
None,
None
url
)
return headers["location"]
@@ -784,10 +746,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(branch, (str, unicode)), branch
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/branches/" + branch,
None,
None,
None
self.url + "/branches/" + branch
)
return github.Branch.Branch(self._requester, headers, data, completed=True)
@@ -824,10 +783,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/comments/" + str(id),
None,
None,
None
self.url + "/comments/" + str(id)
)
return github.CommitComment.CommitComment(self._requester, headers, data, completed=True)
@@ -852,10 +808,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/commits/" + sha,
None,
None,
None
self.url + "/commits/" + sha
)
return github.Commit.Commit(self._requester, headers, data, completed=True)
@@ -912,9 +865,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/contents" + path,
url_parameters,
None,
None
parameters=url_parameters
)
return github.ContentFile.ContentFile(self._requester, headers, data, completed=True)
@@ -933,9 +884,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/contents" + path,
url_parameters,
None,
None
parameters=url_parameters
)
# Handle 302 redirect response
@@ -943,9 +892,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"GET",
headers['location'],
url_parameters,
None,
None
parameters=url_parameters
)
return [
@@ -974,10 +921,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/downloads/" + str(id),
None,
None,
None
self.url + "/downloads/" + str(id)
)
return github.Download.Download(self._requester, headers, data, completed=True)
@@ -1026,10 +970,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/blobs/" + sha,
None,
None,
None
self.url + "/git/blobs/" + sha
)
return github.GitBlob.GitBlob(self._requester, headers, data, completed=True)
@@ -1042,10 +983,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/commits/" + sha,
None,
None,
None
self.url + "/git/commits/" + sha
)
return github.GitCommit.GitCommit(self._requester, headers, data, completed=True)
@@ -1061,10 +999,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(ref, (str, unicode)), ref
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + prefix + ref,
None,
None,
None
self.url + prefix + ref
)
return github.GitRef.GitRef(self._requester, headers, data, completed=True)
@@ -1089,10 +1024,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(sha, (str, unicode)), sha
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/tags/" + sha,
None,
None,
None
self.url + "/git/tags/" + sha
)
return github.GitTag.GitTag(self._requester, headers, data, completed=True)
@@ -1111,9 +1043,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/git/trees/" + sha,
url_parameters,
None,
None
parameters=url_parameters
)
return github.GitTree.GitTree(self._requester, headers, data, completed=True)
@@ -1126,10 +1056,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/hooks/" + str(id),
None,
None,
None
self.url + "/hooks/" + str(id)
)
return github.Hook.Hook(self._requester, headers, data, completed=True)
@@ -1154,10 +1081,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(number, (int, long)), number
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/issues/" + str(number),
None,
None,
None
self.url + "/issues/" + str(number)
)
return github.Issue.Issue(self._requester, headers, data, completed=True)
@@ -1246,10 +1170,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/issues/events/" + str(id),
None,
None,
None
self.url + "/issues/events/" + str(id)
)
return github.IssueEvent.IssueEvent(self._requester, headers, data, completed=True)
@@ -1274,10 +1195,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(id, (int, long)), id
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/keys/" + str(id),
None,
None,
None
self.url + "/keys/" + str(id)
)
return github.RepositoryKey.RepositoryKey(self._requester, headers, data, completed=True, repoUrl=self._url)
@@ -1302,10 +1220,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(name, (str, unicode)), name
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/labels/" + urllib.quote(name),
None,
None,
None
self.url + "/labels/" + urllib.quote(name)
)
return github.Label.Label(self._requester, headers, data, completed=True)
@@ -1328,10 +1243,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/languages",
None,
None,
None
self.url + "/languages"
)
return data
@@ -1344,10 +1256,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(number, (int, long)), number
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/milestones/" + str(number),
None,
None,
None
self.url + "/milestones/" + str(number)
)
return github.Milestone.Milestone(self._requester, headers, data, completed=True)
@@ -1397,10 +1306,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(number, (int, long)), number
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/pulls/" + str(number),
None,
None,
None
self.url + "/pulls/" + str(number)
)
return github.PullRequest.PullRequest(self._requester, headers, data, completed=True)
@@ -1469,9 +1375,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"GET",
self.url + "/readme",
url_parameters,
None,
None
parameters=url_parameters
)
return github.ContentFile.ContentFile(self._requester, headers, data, completed=True)
@@ -1544,10 +1448,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(assignee, github.NamedUser.NamedUser), assignee
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/assignees/" + assignee._identity,
None,
None,
None
self.url + "/assignees/" + assignee._identity
)
return status == 204
@@ -1560,10 +1461,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/collaborators/" + collaborator._identity,
None,
None,
None
self.url + "/collaborators/" + collaborator._identity
)
return status == 204
@@ -1578,10 +1476,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(keyword, (str, unicode)), keyword
headers, data = self._requester.requestJsonAndCheck(
"GET",
"/legacy/issues/search/" + self.owner.login + "/" + self.name + "/" + state + "/" + urllib.quote(keyword),
None,
None,
None
"/legacy/issues/search/" + self.owner.login + "/" + self.name + "/" + state + "/" + urllib.quote(keyword)
)
return [
github.Issue.Issue(self._requester, headers, github.Legacy.convertIssue(element), completed=False)
@@ -1608,9 +1503,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/merges",
None,
None,
post_parameters
input=post_parameters
)
if data is None:
return None
@@ -1626,10 +1519,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
assert isinstance(collaborator, github.NamedUser.NamedUser), collaborator
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/collaborators/" + collaborator._identity,
None,
None,
None
self.url + "/collaborators/" + collaborator._identity
)
def subscribe_to_hub(self, event, callback, secret=github.GithubObject.NotSet):
@@ -1669,9 +1559,7 @@ class Repository(github.GithubObject.CompletableGithubObject):
responseHeaders, output = self._requester.requestMultipartAndCheck(
"POST",
"/hub",
None,
None,
post_parameters,
input=post_parameters
)
@property
+2 -7
View File
@@ -89,10 +89,7 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.__customUrl,
None,
None,
None
self.__customUrl
)
def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet):
@@ -112,9 +109,7 @@ class RepositoryKey(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.__customUrl,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+16 -12
View File
@@ -164,10 +164,10 @@ class Requester:
'See http://developer.github.com/v3/#user-agent-required'
self.__userAgent = user_agent
def requestJsonAndCheck(self, verb, url, parameters, headers, input):
return self.__check(*self.requestJson(verb, url, parameters, headers, input))
def requestJsonAndCheck(self, verb, url, parameters=None, headers=None, input=None, cnx=None):
return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))
def requestMultipartAndCheck(self, verb, url, parameters, headers, input):
def requestMultipartAndCheck(self, verb, url, parameters=None, headers=None, input=None):
return self.__check(*self.requestMultipart(verb, url, parameters, headers, input))
def __check(self, status, responseHeaders, output):
@@ -200,13 +200,13 @@ class Requester:
except ValueError, e:
return {'data': data}
def requestJson(self, verb, url, parameters, headers, input):
def requestJson(self, verb, url, parameters=None, headers=None, input=None, cnx=None):
def encode(input):
return "application/json", json.dumps(input)
return self.__requestEncode(verb, url, parameters, headers, input, encode)
return self.__requestEncode(cnx, verb, url, parameters, headers, input, encode)
def requestMultipart(self, verb, url, parameters, headers, input):
def requestMultipart(self, verb, url, parameters=None, headers=None, input=None):
def encode(input):
boundary = "----------------------------3c3ba8b523b2"
eol = "\r\n"
@@ -220,9 +220,9 @@ class Requester:
encoded_input += "--" + boundary + "--" + eol
return "multipart/form-data; boundary=" + boundary, encoded_input
return self.__requestEncode(verb, url, parameters, headers, input, encode)
return self.__requestEncode(None, verb, url, parameters, headers, input, encode)
def __requestEncode(self, verb, url, parameters, requestHeaders, input, encode):
def __requestEncode(self, cnx, verb, url, parameters, requestHeaders, input, encode):
assert verb in ["HEAD", "GET", "POST", "PATCH", "PUT", "DELETE"]
if parameters is None:
parameters = dict()
@@ -241,7 +241,7 @@ class Requester:
self.NEW_DEBUG_FRAME(requestHeaders)
status, responseHeaders, output = self.__requestRaw(verb, url, requestHeaders, encoded_input)
status, responseHeaders, output = self.__requestRaw(cnx, verb, url, requestHeaders, encoded_input)
if "x-ratelimit-remaining" in responseHeaders and "x-ratelimit-limit" in responseHeaders:
self.rate_limiting = (int(responseHeaders["x-ratelimit-remaining"]), int(responseHeaders["x-ratelimit-limit"]))
@@ -255,8 +255,12 @@ class Requester:
return status, responseHeaders, output
def __requestRaw(self, verb, url, requestHeaders, input):
cnx = self.__createConnection()
def __requestRaw(self, cnx, verb, url, requestHeaders, input):
if cnx is None:
cnx = self.__createConnection()
else:
assert cnx == "status"
cnx = self.__httpsConnectionClass("status.github.com", 443)
cnx.request(
verb,
url,
@@ -310,7 +314,7 @@ class Requester:
kwds["strict"] = True # Useless in Python3, would generate a deprecation warning
if atLeastPython26: # pragma no branch (Branch useful only with Python 2.5)
kwds["timeout"] = self.__timeout # Did not exist before Python2.6
return self.__connectionClass(host=self.__hostname, port=self.__port, **kwds)
return self.__connectionClass(self.__hostname, self.__port, **kwds)
def __log(self, verb, url, requestHeaders, input, status, responseHeaders, output):
logger = logging.getLogger(__name__)
+56
View File
@@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
############################ Copyrights and license ############################
# #
# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> #
# #
# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #
# #
# PyGithub is free software: you can redistribute it and/or modify it under #
# the terms of the GNU Lesser General Public License as published by the Free #
# Software Foundation, either version 3 of the License, or (at your option) #
# any later version. #
# #
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
# details. #
# #
# You should have received a copy of the GNU Lesser General Public License #
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
import github.GithubObject
class Status(github.GithubObject.NonCompletableGithubObject):
"""
This class represents status as defined in https://status.github.com/api
"""
@property
def status(self):
"""
:type: string
"""
return self._NoneIfNotSet(self._status)
@property
def last_updated(self):
"""
:type: datetime.datetime
"""
return self._NoneIfNotSet(self._last_updated)
def _initAttributes(self):
self._status = github.GithubObject.NotSet
self._last_updated = github.GithubObject.NotSet
def _useAttributes(self, attributes):
if "status" in attributes: # pragma no branch
assert attributes["status"] is None or isinstance(attributes["status"], (str, unicode)), attributes["status"]
self._status = attributes["status"]
if "last_updated" in attributes: # pragma no branch
assert attributes["last_updated"] is None or isinstance(attributes["last_updated"], (str, unicode)), attributes["last_updated"]
self._last_updated = self._parseDatetime(attributes["last_updated"])
+66
View File
@@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
############################ Copyrights and license ############################
# #
# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> #
# #
# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #
# #
# PyGithub is free software: you can redistribute it and/or modify it under #
# the terms of the GNU Lesser General Public License as published by the Free #
# Software Foundation, either version 3 of the License, or (at your option) #
# any later version. #
# #
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
# details. #
# #
# You should have received a copy of the GNU Lesser General Public License #
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
import github.GithubObject
class StatusMessage(github.GithubObject.NonCompletableGithubObject):
"""
This class represents status messages as defined in https://status.github.com/api
"""
@property
def body(self):
"""
:type: string
"""
return self._NoneIfNotSet(self._body)
@property
def status(self):
"""
:type: string
"""
return self._NoneIfNotSet(self._status)
@property
def created_on(self):
"""
:type: datetime.datetime
"""
return self._NoneIfNotSet(self._created_on)
def _initAttributes(self):
self._status = github.GithubObject.NotSet
self._created_on = github.GithubObject.NotSet
def _useAttributes(self, attributes):
if "body" in attributes: # pragma no branch
assert attributes["body"] is None or isinstance(attributes["body"], (str, unicode)), attributes["body"]
self._body = attributes["body"]
if "status" in attributes: # pragma no branch
assert attributes["status"] is None or isinstance(attributes["status"], (str, unicode)), attributes["status"]
self._status = attributes["status"]
if "created_on" in attributes: # pragma no branch
assert attributes["created_on"] is None or isinstance(attributes["created_on"], (str, unicode)), attributes["created_on"]
self._created_on = self._parseDatetime(attributes["created_on"])
+8 -31
View File
@@ -94,10 +94,7 @@ class Team(github.GithubObject.CompletableGithubObject):
assert isinstance(member, github.NamedUser.NamedUser), member
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/members/" + member._identity,
None,
None,
None
self.url + "/members/" + member._identity
)
def add_to_repos(self, repo):
@@ -109,10 +106,7 @@ class Team(github.GithubObject.CompletableGithubObject):
assert isinstance(repo, github.Repository.Repository), repo
headers, data = self._requester.requestJsonAndCheck(
"PUT",
self.url + "/repos/" + repo._identity,
None,
None,
None
self.url + "/repos/" + repo._identity
)
def delete(self):
@@ -122,10 +116,7 @@ class Team(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, name, permission=github.GithubObject.NotSet):
@@ -145,9 +136,7 @@ class Team(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
@@ -184,10 +173,7 @@ class Team(github.GithubObject.CompletableGithubObject):
assert isinstance(member, github.NamedUser.NamedUser), member
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/members/" + member._identity,
None,
None,
None
self.url + "/members/" + member._identity
)
return status == 204
@@ -200,10 +186,7 @@ class Team(github.GithubObject.CompletableGithubObject):
assert isinstance(repo, github.Repository.Repository), repo
status, headers, data = self._requester.requestJson(
"GET",
self.url + "/repos/" + repo._identity,
None,
None,
None
self.url + "/repos/" + repo._identity
)
return status == 204
@@ -216,10 +199,7 @@ class Team(github.GithubObject.CompletableGithubObject):
assert isinstance(member, github.NamedUser.NamedUser), member
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/members/" + member._identity,
None,
None,
None
self.url + "/members/" + member._identity
)
def remove_from_repos(self, repo):
@@ -231,10 +211,7 @@ class Team(github.GithubObject.CompletableGithubObject):
assert isinstance(repo, github.Repository.Repository), repo
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url + "/repos/" + repo._identity,
None,
None,
None
self.url + "/repos/" + repo._identity
)
@property
+2 -7
View File
@@ -80,10 +80,7 @@ class UserKey(github.GithubObject.CompletableGithubObject):
"""
headers, data = self._requester.requestJsonAndCheck(
"DELETE",
self.url,
None,
None,
None
self.url
)
def edit(self, title=github.GithubObject.NotSet, key=github.GithubObject.NotSet):
@@ -103,9 +100,7 @@ class UserKey(github.GithubObject.CompletableGithubObject):
headers, data = self._requester.requestJsonAndCheck(
"PATCH",
self.url,
None,
None,
post_parameters
input=post_parameters
)
self._useAttributes(data)
+1
View File
@@ -56,6 +56,7 @@ from PullRequestFile import *
from RateLimiting import *
from Repository import *
from RepositoryKey import *
from Status import *
from Tag import *
from Team import *
from UserKey import *
@@ -0,0 +1,11 @@
https
GET
status.github.com
443
/api/last-message.json
{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
null
200
[('status', '200 OK'), ('content-length', '93'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:34:01 GMT'), ('content-type', 'application/json;charset=utf-8')]
{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T15:41:46Z"}
@@ -0,0 +1,11 @@
https
GET
status.github.com
443
/api/messages.json
{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
null
200
[('status', '200 OK'), ('content-length', '1492'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:41:31 GMT'), ('content-type', 'application/json;charset=utf-8')]
[{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T15:41:46Z"},{"status":"minor","body":"GitHub Pages are currently unavailable. We're investigating the problem.","created_on":"2013-09-01T15:26:59Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T15:17:24Z"},{"status":"minor","body":"We are investigating an increased rate of errors on GitHub.com","created_on":"2013-09-01T15:14:24Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T06:52:46Z"},{"status":"minor","body":"Some GitHub pages are again unavailable. We are continuing to investigate.","created_on":"2013-09-01T06:50:31Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-09-01T06:47:25Z"},{"status":"minor","body":"Some GitHub pages are temporarily unavailable.","created_on":"2013-09-01T06:43:03Z"},{"status":"good","body":"We're back up, now featuring a massively upgraded DB cluster with SSDs and 10Gbps networking! Thanks for your patience.","created_on":"2013-08-31T12:13:04Z"},{"status":"major","body":"We're beginning our scheduled maintenance now, and expect to be back up in 20 minutes. https://github.com/blog/1603-site-maintenance-august-31st-2013","created_on":"2013-08-31T12:00:13Z"},{"status":"good","body":"Everything operating normally.","created_on":"2013-08-31T11:45:50Z"},{"status":"minor","body":"We are investigating issues with GitHub Pages","created_on":"2013-08-31T11:43:39Z"}]
@@ -0,0 +1,11 @@
https
GET
status.github.com
443
/api/status.json
{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
null
200
[('status', '200 OK'), ('content-length', '55'), ('vary', 'Accept-Encoding'), ('server', 'GitHub.com'), ('connection', 'keep-alive'), ('date', 'Fri, 06 Sep 2013 08:29:36 GMT'), ('content-type', 'application/json;charset=utf-8')]
{"status":"good","last_updated":"2013-09-06T08:29:27Z"}
+43
View File
@@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
############################ Copyrights and license ############################
# #
# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> #
# #
# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ #
# #
# PyGithub is free software: you can redistribute it and/or modify it under #
# the terms of the GNU Lesser General Public License as published by the Free #
# Software Foundation, either version 3 of the License, or (at your option) #
# any later version. #
# #
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
# details. #
# #
# You should have received a copy of the GNU Lesser General Public License #
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
import Framework
import github
import datetime
class Status(Framework.TestCase):
def testGetStatus(self):
status = self.g.get_api_status()
self.assertEqual(status.status, "good")
self.assertEqual(status.last_updated, datetime.datetime(2013, 9, 6, 8, 29, 27))
def testGetLastMessage(self):
message = self.g.get_last_api_status_message()
self.assertEqual(message.status, "good")
self.assertEqual(message.body, "Everything operating normally.")
self.assertEqual(message.created_on, datetime.datetime(2013, 9, 1, 15, 41, 46))
def testGetMessages(self):
self.assertListKeyEqual(self.g.get_api_status_messages(), lambda m: m.status, ["good", "minor", "good", "minor", "good", "minor", "good", "minor", "good", "major", "good", "minor"])