|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
From 22936cd8ed0f0d5b0c3ece75752e2877f46af455 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
From: Patrick Uiterwijk <puiterwijk@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Date: Wed, 21 Sep 2016 13:48:07 +0000
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Subject: [PATCH 1/3] Rewrite http.py to use python-requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
This will work around an issue when pycurl is used in the same context as
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
rpm is, as used by koji-containerbuild.
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Signed-off-by: Patrick Uiterwijk <puiterwijk@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
---
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
osbs/http.py | 290 +++++++++--------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
1 file changed, 42 insertions(+), 248 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
diff --git a/osbs/http.py b/osbs/http.py
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
index 9955c55..5f39141 100644
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
--- a/osbs/http.py
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+++ b/osbs/http.py
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -24,77 +24,17 @@
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
import logging
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
from io import BytesIO
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-import pycurl
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
from osbs.exceptions import OsbsException, OsbsNetworkException, OsbsResponseException
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+import requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
try:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # py2
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- import httplib
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ from requests_kerberos import HTTPKerberosAuth
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
except ImportError:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # py3
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- import http.client as httplib
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ HTTPKerberosAuth = None
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-logger = logging.getLogger(__name__)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-SELECT_TIMEOUT = 9999
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-PYCURL_NETWORK_CODES = [pycurl.E_BAD_CONTENT_ENCODING,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_BAD_DOWNLOAD_RESUME,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_CONV_FAILED,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_CONV_REQD,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_COULDNT_CONNECT,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_COULDNT_RESOLVE_HOST,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_COULDNT_RESOLVE_PROXY,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_FILESIZE_EXCEEDED,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_HTTP_POST_ERROR,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_HTTP_RANGE_ERROR,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_HTTP_RETURNED_ERROR,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_LOGIN_DENIED,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # old pycurl: E_OPERATION_TIMEOUTED, new pycurl: E_OPERATION_TIMEDOUT
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- getattr(pycurl, "E_OPERATION_TIMEDOUT", "E_OPERATION_TIMEOUTED"),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_PARTIAL_FILE,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_READ_ERROR,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_RECV_ERROR,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_REMOTE_FILE_NOT_FOUND,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_SEND_ERROR,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_SSL_CACERT,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_SSL_CERTPROBLEM,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_SSL_CIPHER,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_SSL_CONNECT_ERROR,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_SSL_PEER_CERTIFICATE,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_SSL_SHUTDOWN_FAILED,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_TOO_MANY_REDIRECTS,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_UNSUPPORTED_PROTOCOL,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.E_WRITE_ERROR]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-PYCURL_NETWORK_CODES = [x for x in PYCURL_NETWORK_CODES if x is not None]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-def parse_headers(all_headers):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # all_headers contains headers from all responses - even without FOLLOWLOCATION there
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # might be multiple sets of headers due to 401 Unauthorized. We only care about the last
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # response.
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- try:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- raw_headers = all_headers.split(b"\r\n\r\n")[-2]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- except IndexError:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- logger.warning('Incorrectly terminated http headers')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- raw_headers = all_headers
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- logger.debug("raw headers: " + repr(raw_headers))
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # http://stackoverflow.com/questions/24728088/python-parse-http-response-string/24729316#24729316
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- class FakeSocket(object):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def __init__(self, response_str):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self._file = BytesIO(response_str)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def makefile(self, *args, **kwargs):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return self._file
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- response = httplib.HTTPResponse(FakeSocket(raw_headers))
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- response.begin()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- header_list = [(k.lower(), v) for (k, v) in response.getheaders()]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return dict(header_list)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+logger = logging.getLogger(__name__)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
class HttpSession(object):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -120,22 +60,9 @@ def request(self, url, *args, **kwargs):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
return stream
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
with stream as s:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # joining at once is much faster than doing += in a loop
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- all_chunks = list(s.iter_chunks())
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- content = ''.join(all_chunks)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ content = s.req.content
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
return HttpResponse(s.status_code, s.headers, content)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- except pycurl.error as ex:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- code = ex.args[0]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- try:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- message = ex.args[1]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- except IndexError:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # happened on rhel 6
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- message = ""
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if code in PYCURL_NETWORK_CODES:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- raise OsbsNetworkException(url, message, code, *ex.args[2:],
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- cause=ex,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- traceback=sys.exc_info()[2])
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ except Exception as ex:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
raise OsbsException(cause=ex, traceback=sys.exc_info()[2])
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
@@ -160,203 +87,68 @@ def __init__(self, url, method, data=None, kerberos_auth=False,
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
self.status_code = 0
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
self.headers = None
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.response_buffer = BytesIO()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.headers_buffer = BytesIO()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.response_decoder = None
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
self.url = url
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
headers = headers or {}
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
method = method.lower()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c = pycurl.Curl()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.curl_multi = pycurl.CurlMulti()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if method == 'post':
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.POST, 1)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- headers["Expect"] = "" # openshift can't handle Expect
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- elif method == 'get':
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.HTTPGET, 1)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- elif method == 'put':
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # self.c.setopt(pycurl.PUT, 1)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.CUSTOMREQUEST, b"PUT")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- headers["Expect"] = ""
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- elif method == 'delete':
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.CUSTOMREQUEST, b"DELETE")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- else:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ if method not in ['post', 'get', 'put', 'delete']:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
raise RuntimeError("Unsupported method '%s' for curl call!" % method)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.COOKIEFILE, b'')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.URL, str(url))
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.WRITEFUNCTION, self.response_buffer.write)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.HEADERFUNCTION, self.headers_buffer.write)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.DEBUGFUNCTION, self._curl_debug)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.SSL_VERIFYPEER, 1 if verify_ssl else 0)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.SSL_VERIFYHOST, 2 if verify_ssl else 0)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if ca:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- logger.info("Setting CAINFO to %r", ca)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.CAINFO, ca)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.VERBOSE, 1 if verbose else 0)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args = {}
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ if method in ['post', 'put']:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ headers['Expect'] = ''
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ if not verify_ssl:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['verify'] = False
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ else:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ if ca:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['verify'] = ca
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ else:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['verify'] = True
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
if username and password:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- username = username.encode('utf-8')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- password = password.encode('utf-8')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.USERPWD, username + b":" + password)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['auth'] = (username, password)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
if client_cert and client_key:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.SSLCERTTYPE, "PEM")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.SSLKEYTYPE, "PEM")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.SSLCERT, client_cert)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.SSLKEY, client_key)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['cert'] = (client_cert, client_key)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
if data:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # curl sets the method to post if one sets any POSTFIELDS (even '')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.POSTFIELDS, data)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['data'] = data
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
if use_json:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- headers['Content-Type'] = b'application/json'
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ headers['Content-Type'] = 'application/json'
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if allow_redirects:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.FOLLOWLOCATION, 1)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['allow_redirects'] = allow_redirects
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
if kerberos_auth:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_GSSNEGOTIATE)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.USERPWD, b':')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ if not HTTPKerberosAuth:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ raise RuntimeError('Kerberos auth unavailable')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['auth'] = HTTPKerberosAuth()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
if stream:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- headers['Cache-Control'] = b'no-cache'
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if headers:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- header_list = []
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- for header_key, header_value in headers.items():
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- header_list.append(str("%s: %s" % (header_key, header_value)))
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.setopt(pycurl.HTTPHEADER, header_list)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.curl_multi.add_handle(self.c)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # Send request and read all headers. We have all headers once we receive some data or once
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # the response ends.
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # NOTE: HTTP response in chunked encoding can contain additional headers ("trailers") in the
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # last chunk. This is not handled here.
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- while not (self.finished or self._any_data_received()):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self._select()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self._perform()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.headers = parse_headers(self.headers_buffer.getvalue())
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.status_code = self.c.getinfo(pycurl.HTTP_CODE)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.response_decoder = codecs.getincrementaldecoder(self.encoding)()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def _perform(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- while True:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ret, num_handles = self.curl_multi.perform()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if ret != pycurl.E_CALL_MULTI_PERFORM:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # see curl_multi_perform manpage
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- break
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- num_q, _, err_list = self.curl_multi.info_read()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if num_q != 0:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- logger.warning("CurlMulti.info_read() has %s remaining messages", num_q)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if err_list:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- err_obj = err_list[0]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # For anything but the connection being closed, raise
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if err_obj[1] != pycurl.E_PARTIAL_FILE:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- raise OsbsNetworkException(self.url, err_obj[2], err_obj[1])
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.finished = (num_handles == 0)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def _select(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- sel = self.curl_multi.select(SELECT_TIMEOUT)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if sel == -1:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- raise OsbsException("CurlMulti.select() timed out")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- elif sel == 0:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # sel==0 means curl_multi_fdset returned -1
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # manual page suggests sleeping >100ms when this happens:(
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- time.sleep(0.1)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def _any_data_received(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return self.response_buffer.tell() != 0
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['stream'] = True
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ args['headers'] = headers
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ self.req = requests.request(method, url, **args)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ self.headers = self.req.headers
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ self.status_code = self.req.status_code
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
def _get_received_data(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- result = self.response_buffer.getvalue()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.response_buffer.truncate(0)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.response_buffer.seek(0)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return self.response_decoder.decode(result, final=self.finished)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ return self.req.content
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
def iter_chunks(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- while True:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self._perform()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if self._any_data_received():
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- yield self._get_received_data()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if self.finished:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- break
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self._select()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- logger.debug("end of the stream")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.close()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ return self.req.iter_content(None)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
def iter_lines(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- chunks = self.iter_chunks()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return self._split_lines_from_chunks(chunks)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- @staticmethod
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def _split_lines_from_chunks(chunks):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- # same behaviour as requests' Response.iter_lines(...)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pending = None
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- for chunk in chunks:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if pending is not None:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- chunk = pending + chunk
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- lines = chunk.splitlines()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if lines and lines[-1] and chunk and lines[-1][-1] == chunk[-1]:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pending = lines.pop()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- else:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pending = None
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- for line in lines:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- yield line
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if pending is not None:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- yield pending
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- @staticmethod
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def _curl_debug(debug_type, debug_msg):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- try:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- logger_name = {
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.INFOTYPE_TEXT: 'curl',
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.INFOTYPE_HEADER_IN: 'in',
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- pycurl.INFOTYPE_HEADER_OUT: 'out'
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- }[debug_type]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- except KeyError:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- curl_logger = logging.getLogger(__name__ + '.' + logger_name)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- for line in debug_msg.splitlines():
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if not line:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- continue
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- curl_logger.debug(line)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- @property
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def encoding(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- encoding = None
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if 'content-type' in self.headers:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- content_type = self.headers['content-type'].lower()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- match = re.search(r'charset=(\S+)', content_type)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if match:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- encoding = match.group(1)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if encoding is None:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- encoding = 'utf-8' # assume utf-8
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return encoding
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ return self.req.iter_lines()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
def close(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
if not self.closed:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
logger.debug("cleaning up")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.curl_multi.remove_handle(self.c)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.c.close()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.curl_multi.close()
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ del self.req
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
self.closed = True
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
def __del__(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
@@ -376,7 +168,9 @@ def __init__(self, status_code, headers, content):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
self.content = content
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
def json(self, check=True):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if check and self.status_code not in (0, httplib.OK, httplib.CREATED):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+ if check and self.status_code not in (0, requests.codes.OK, requests.codes.CREATED):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
raise OsbsResponseException(self.content, self.status_code)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
+ if isinstance(self.content, bytes):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
+ self.content = self.content.decode('utf-8')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
return json.loads(self.content)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
From b626346936a0cd12cdaed028152311f70afcdc41 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
From: Patrick Uiterwijk <puiterwijk@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Date: Wed, 21 Sep 2016 14:13:25 +0000
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Subject: [PATCH 2/3] Fix tests for porting of http client to requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Signed-off-by: Patrick Uiterwijk <puiterwijk@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
---
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
tests/test_http.py | 58 +-----------------------------------------------------
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
1 file changed, 1 insertion(+), 57 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
diff --git a/tests/test_http.py b/tests/test_http.py
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
index 674f9eb..30d2f14 100644
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
--- a/tests/test_http.py
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+++ b/tests/test_http.py
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -12,7 +12,7 @@
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
import pytest
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
import osbs.http as osbs_http
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-from osbs.http import parse_headers, HttpSession, HttpStream
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+from osbs.http import HttpSession, HttpStream
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
from osbs.exceptions import OsbsNetworkException
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
from tests.fake_api import Connection, ResponseMapping
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -34,22 +34,6 @@ def has_connection():
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
return False
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-class TestParseHeaders(object):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def test_parse_headers(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- conn = Connection("0.5.4")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- rm = ResponseMapping("0.5.4", lookup=conn.get_definition_for)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- key, value = conn.get_definition_for("/oauth/authorize")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- file_name = value["get"]["file"]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- raw_headers = rm.get_response_content(file_name)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- headers = parse_headers(raw_headers)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- assert headers is not None
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- assert len(headers.items()) > 0
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- assert headers["location"]
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@pytest.mark.skipif(not has_connection(),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
reason="requires internet connection")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
class TestHttpSession(object):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -141,43 +125,3 @@ def test_raise(self, s):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
with s.get("http://httpbin.org/stream/3", stream=True) as s:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
raise RuntimeError("hi")
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
assert s.closed
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-class TestHttpStream(object):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- @pytest.mark.parametrize('chunks,expected_content', [
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'foo', b'', b'bar', b'baz'], u'foobarbaz'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'a', b'b', b'\xc4', b'\x8d', b'x'], u'ab\u010dx'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'\xe2', b'\x8a', b'\x86'], u'\u2286'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'\xe2\x8a', b'\x86'], u'\u2286'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'\xe2', b'\x8a\x86'], u'\u2286'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'aaaa', b'\xe2\x8a', b'\x86'], u'aaaa\u2286'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'aaaa\xe2\x8a', b'\x86'], u'aaaa\u2286'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ([b'\xe2\x8a', b'\x86ffff'], u'\u2286ffff'),
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- ])
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def test_http_multibyte_decoding(self, chunks, expected_content):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- class Whatever(object):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def __getattr__(self, name):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return self
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def __call__(self, *args, **kwargs):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- return self
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- flexmock(pycurl).should_receive('Curl').and_return(Whatever())
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- flexmock(pycurl).should_receive('CurlMulti').and_return(Whatever())
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- (flexmock(osbs_http).should_receive('parse_headers')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- .and_return({'content-type': 'application/json; charset=utf-8'}))
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- flexmock(HttpStream, _select=lambda: None)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- def mock_perform(self):
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- if chunks:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.response_buffer.write(chunks.pop(0))
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- else:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- self.finished = True
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- try:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- orig_perform = HttpStream._perform
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- HttpStream._perform = mock_perform
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- r = HttpSession(verbose=True).get('http://')
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- assert r.content == expected_content
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- finally:
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
- HttpStream._perform = orig_perform
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
aa7aaa1 |
From cdd2061d6397e159bb32413b39e538be7685b505 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
From: Patrick Uiterwijk <puiterwijk@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Date: Wed, 21 Sep 2016 14:27:16 +0000
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Subject: [PATCH 3/3] Update spec file to include python-requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Signed-off-by: Patrick Uiterwijk <puiterwijk@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
---
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
osbs-client.spec | 12 ++++++++----
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
1 file changed, 8 insertions(+), 4 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
diff --git a/osbs-client.spec b/osbs-client.spec
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
index 298aadf..c0b3cd5 100644
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
--- a/osbs-client.spec
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+++ b/osbs-client.spec
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -60,7 +60,8 @@ BuildRequires: python-pytest-capturelog
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
BuildRequires: python-flexmock
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
BuildRequires: python-six
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
BuildRequires: python-dockerfile-parse
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-BuildRequires: python-pycurl
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+BuildRequires: python-requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+BuildRequires: python-requests-kerberos
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
%endif # with_check
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
%if 0%{?with_python3}
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -73,7 +74,8 @@ BuildRequires: python3-pytest-capturelog
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
BuildRequires: python3-flexmock
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
BuildRequires: python3-six
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
BuildRequires: python3-dockerfile-parse
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-BuildRequires: python3-pycurl
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+BuildRequires: python3-requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+BuildRequires: python3-requests-kerberos
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
%endif # with_check
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
%endif # with_python3
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -91,7 +93,8 @@ Summary: Python 2 module for OpenShift Build Service
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Group: Development/Tools
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
License: BSD
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Requires: python-dockerfile-parse
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-Requires: python-pycurl
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+Requires: python-requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+Requires: python-requests-kerberos
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Requires: python-setuptools
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Requires: krb5-workstation
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
%if 0%{?rhel} && 0%{?rhel} <= 6
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
@@ -113,7 +116,8 @@ Summary: Python 3 module for OpenShift Build Service
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Group: Development/Tools
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
License: BSD
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Requires: python3-dockerfile-parse
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
-Requires: python3-pycurl
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+Requires: python3-requests
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
+Requires: python3-requests-kerberos
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Requires: python3-dateutil
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Requires: python3-setuptools
|
|
![](https://seccdn.libravatar.org/avatar/02cf80f2ac9f976511a6d7d797522268f89d58d9817c0a5fc301f40f77ec8cdc?s=16&d=retro) |
2a0688a |
Requires: krb5-workstation
|