@cryptotaxi247 / netdata-1 / commits / 94ba54456

UrlService add support get headers (#9236)

Javier Pastor committed Jul 2, 2020 at 13:01 UTC 94ba5445638a1adc44ec0375875f396f5bbfe6ec
1 file changed +18 -7
collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py
+18 -7
@@ -120,15 +120,17 @@ class UrlService(SimpleService):
120 :return: str
121 """
122 try:
123 - status, data = self._get_raw_data_with_status(url, manager, **kwargs)
123 + response = self._do_request(url, manager, **kwargs)
124 except Exception as error:
125 self.error('Url: {url}. Error: {error}'.format(url=url or self.url, error=error))
126 return None
127
128 - if status == 200:
129 - return data
128 + if response.status == 200:
129 + if isinstance(response.data, str):
130 + return response.data
131 + return response.data.decode(errors='ignore')
132 else:
131 - self.debug('Url: {url}. Http response status code: {code}'.format(url=url or self.url, code=status))
133 + self.debug('Url: {url}. Http response status code: {code}'.format(url=url or self.url, code=response.status))
134 return None
135
136 def _get_raw_data_with_status(self, url=None, manager=None, retries=1, redirect=True, **kwargs):
@@ -136,6 +138,17 @@ class UrlService(SimpleService):
138 Get status and response body content from http request. Does not catch exceptions
139 :return: int, str
140 """
141 + response = self._do_request(url, manager, retries, redirect, **kwargs)
142 +
143 + if isinstance(response.data, str):
144 + return response.status, response.data
145 + return response.status, response.data.decode(errors='ignore')
146 +
147 + def _do_request(self, url=None, manager=None, retries=1, redirect=True, **kwargs):
148 + """
149 + Get response from http request. Does not catch exceptions
150 + :return: HTTPResponse
151 + """
152 url = url or self.url
153 manager = manager or self._manager
154 retry = urllib3.Retry(retries)
@@ -154,9 +167,7 @@ class UrlService(SimpleService):
167 redirect=redirect,
168 **kwargs
169 )
157 - if isinstance(response.data, str):
158 - return response.status, response.data
159 - return response.status, response.data.decode(errors='ignore')
170 + return response
171
172 def check(self):
173 """