aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/services/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3/services/base.py')
-rw-r--r--pygithub3/services/base.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py
index 960912a..1ade763 100644
--- a/pygithub3/services/base.py
+++ b/pygithub3/services/base.py
@@ -45,7 +45,27 @@ class Base(object):
def _put(self, request_uri, **kwargs):
request = self.get_request(request_uri)
- self.client.put(request, **kwargs)
+ resource = request.get_resource()
+ """ Bug in Github API? requests library?
+
+ I must send data as empty string when the specifications' of some PUT
+ request are 'Not send input data'. If I don't do that and send data as
+ None, the requests library doesn't send 'Content-length' header and the
+ server returns 411 - Required Content length (at least 0)
+
+ For instance:
+ - follow-user request doesn't send input data
+ - merge-pull request send data
+
+ For that reason I must do a conditional because I don't want to return
+ an empty string on follow-user request because it could be confused
+
+ Related: ht
+ """
+ input_data = request.get_data() or ''
+ response = self.client.put(request, data=input_data, **kwargs)
+ if response.status_code != '204': # != NO_CONTENT
+ return resource.loads(response.content)
def _delete(self, request_uri, **kwargs):
request = self.get_request(request_uri)