diff --git a/github2/core.py b/github2/core.py index 91ce29d..def3b1d 100644 --- a/github2/core.py +++ b/github2/core.py @@ -34,8 +34,9 @@ class GithubCommand(object): def make_request(self, command, *args, **kwargs): filter = kwargs.get("filter") - post_data = kwargs.get("post_data") - if post_data: + post_data = kwargs.get("post_data") or {} + method = kwargs.get("method", "GET") + if post_data or method.upper() == "POST": response = self.request.post(self.domain, command, *args, **post_data) else: diff --git a/github2/repositories.py b/github2/repositories.py index 1a3befb..9ca71c0 100644 --- a/github2/repositories.py +++ b/github2/repositories.py @@ -66,7 +66,7 @@ class Repositories(GithubCommand): def remove_collaborator(self, repo_name, username): return self.make_request("collaborators", repo_name, "remove", - username) + username, method="POST") def network(self, project): return self.make_request("show", project, "network", filter="network") diff --git a/github2/request.py b/github2/request.py index 00a09a2..4f79d3e 100644 --- a/github2/request.py +++ b/github2/request.py @@ -47,26 +47,26 @@ class GithubRequest(object): def post(self, *path_components, **extra_post_data): path_components = filter(None, path_components) - return self.make_request("/".join(path_components), extra_post_data) + return self.make_request("/".join(path_components), extra_post_data, + method="POST") - def make_request(self, path, extra_post_data=None): + def make_request(self, path, extra_post_data=None, method="GET"): extra_post_data = extra_post_data or {} url = "/".join([self.url_prefix, path]) - return self.raw_request(url, extra_post_data) + return self.raw_request(url, extra_post_data, method=method) - def raw_request(self, url, extra_post_data): + def raw_request(self, url, extra_post_data, method="GET"): resource = urlparse(url) post_data = None headers = self.http_headers headers["Accept"] = "text/html" - method = "GET" - if extra_post_data: + method = method.upper() + if extra_post_data or method == "POST": post_data = self.encode_authentication_data(extra_post_data) headers["Content-Length"] = str(len(post_data)) - method = "POST" connector = self.connector_for_scheme[resource.scheme] connection = connector(resource.hostname, resource.port) - connection.request("GET", resource.path, post_data, headers) + connection.request(method, resource.path, post_data, headers) response = connection.getresponse() response_text = response.read() if self.debug: