Carry an explicit method so we can still POST even when there are no extra data (such as for repos.remove_collaborator)

This commit is contained in:
Mark Paschal
2009-11-23 18:20:56 -08:00
parent ee2b7b26c8
commit c4bbd94376
3 changed files with 12 additions and 11 deletions
+3 -2
View File
@@ -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:
+1 -1
View File
@@ -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")
+8 -8
View File
@@ -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: