Python http.client.HTTPConnection() Examples
The following are 30
code examples of http.client.HTTPConnection().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
http.client
, or try the search function
.
Example #1
Source File: conftest.py From vue.py with MIT License | 11 votes |
def http_server(): timeout = 10 class RequestHandler(SimpleHTTPRequestHandler): protocol_version = "HTTP/1.0" def log_message(self, *args): pass with HTTPServer((Address, Port), RequestHandler) as httpd: thread = Thread(target=httpd.serve_forever, daemon=True) thread.start() c = HTTPConnection(Address, Port, timeout=timeout) c.request("GET", "/", "") assert c.getresponse().status == 200 try: yield httpd finally: httpd.shutdown() thread.join(timeout=timeout)
Example #2
Source File: unittest.py From hutils with MIT License | 7 votes |
def disable_network(): """ Disable network """ class DisableNetwork: def __init__(self, *args, **kwargs): raise Exception("Network through socket is disabled!") def __call__(self, *args, **kwargs): raise Exception("Network through socket is disabled!") real_socket = socket.socket client.HTTPConnection = DisableNetwork try: from urllib3 import connection connection.HTTPConnection = DisableNetwork except ImportError: pass socket.socket = DisableNetwork patcher = mock.patch("asyncio.selector_events.socket.socket", real_socket) patcher.start() return patcher
Example #3
Source File: zerotier.py From Paradrop with Apache License 2.0 | 7 votes |
def get_networks(ignore_error=False): """ Get list of active ZeroTier networks. """ auth_token = get_auth_token() if auth_token is None: return [] conn = HTTPConnection("localhost", 9993) path = "/network" headers = { "X-ZT1-Auth": auth_token } conn.request("GET", path, "", headers) res = conn.getresponse() data = json.loads(res.read()) # nwid field is deprecated, so make sure id field exists. for network in data: if 'id' not in network and 'nwid' in network: network['id'] = network['nwid'] return data
Example #4
Source File: test_http.py From heralding with GNU General Public License v3.0 | 7 votes |
def test_connection(self): """ Tests if the capability is up, and sending HTTP 401 (Unauthorized) headers. """ def http_request(): client = httpclient.HTTPConnection('127.0.0.1', 8888) client.request('GET', '/') response = client.getresponse() self.assertEqual(response.status, 401) options = {'enabled': 'True', 'port': 8888, 'users': {'test': 'test'}} http_cap = http.Http(options, self.loop) server_coro = asyncio.start_server( http_cap.handle_session, '0.0.0.0', 8888, loop=self.loop) self.server = self.loop.run_until_complete(server_coro) http_task = self.loop.run_in_executor(None, http_request) self.loop.run_until_complete(http_task)
Example #5
Source File: test_httplib.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_ipv6host_header(self): # Default host header on IPv6 transaction should wrapped by [] if # its actual IPv6 address expected = b'GET /foo HTTP/1.1\r\nHost: [2001::]:81\r\n' \ b'Accept-Encoding: identity\r\n\r\n' conn = client.HTTPConnection('[2001::]:81') sock = FakeSocket('') conn.sock = sock conn.request('GET', '/foo') self.assertTrue(sock.data.startswith(expected)) expected = b'GET /foo HTTP/1.1\r\nHost: [2001:102A::]\r\n' \ b'Accept-Encoding: identity\r\n\r\n' conn = client.HTTPConnection('[2001:102A::]') sock = FakeSocket('') conn.sock = sock conn.request('GET', '/foo') self.assertTrue(sock.data.startswith(expected))
Example #6
Source File: ryu-nat-switch.py From snippet with MIT License | 6 votes |
def send_key(key): addr = '127.0.0.1' port = 8901 method = "POST" url = '/ryu_daolicloud/' body = json.dumps(key) headers = {'Content-Type': 'application/json'} try: conn = HTTPConnection(addr, port, timeout=3) conn.request(method, url, body, headers) response = conn.getresponse() if response.status != 200: return False except NotConnected: return False except Exception: conn.close() return False return True
Example #7
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_host_port(self): # Check invalid host_port for hp in ("www.python.org:abc", "user:password@www.python.org"): self.assertRaises(client.InvalidURL, client.HTTPConnection, hp) for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000", "fe80::207:e9ff:fe9b", 8000), ("www.python.org:80", "www.python.org", 80), ("www.python.org:", "www.python.org", 80), ("www.python.org", "www.python.org", 80), ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 80), ("[fe80::207:e9ff:fe9b]:", "fe80::207:e9ff:fe9b", 80)): c = client.HTTPConnection(hp) self.assertEqual(h, c.host) self.assertEqual(p, c.port)
Example #8
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_send_updating_file(self): def data(): yield 'data' yield None yield 'data_two' class UpdatingFile(): mode = 'r' d = data() def read(self, blocksize=-1): return self.d.__next__() expected = b'data' conn = client.HTTPConnection('example.com') sock = FakeSocket("") conn.sock = sock conn.send(UpdatingFile()) self.assertEqual(sock.data, expected)
Example #9
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_ipv6host_header(self): # Default host header on IPv6 transaction should wrapped by [] if # its actual IPv6 address expected = b'GET /foo HTTP/1.1\r\nHost: [2001::]:81\r\n' \ b'Accept-Encoding: identity\r\n\r\n' conn = client.HTTPConnection('[2001::]:81') sock = FakeSocket('') conn.sock = sock conn.request('GET', '/foo') self.assertTrue(sock.data.startswith(expected)) expected = b'GET /foo HTTP/1.1\r\nHost: [2001:102A::]\r\n' \ b'Accept-Encoding: identity\r\n\r\n' conn = client.HTTPConnection('[2001:102A::]') sock = FakeSocket('') conn.sock = sock conn.request('GET', '/foo') self.assertTrue(sock.data.startswith(expected))
Example #10
Source File: experiment.py From c2s with MIT License | 6 votes |
def status(self, status, **kwargs): if self.server: try: conn = HTTPConnection(self.server, self.port) conn.request('GET', '/version/') resp = conn.getresponse() if not resp.read().startswith('Experiment'): raise RuntimeError() HTTPConnection(self.server, self.port).request('POST', '', str(dict({ 'id': self.id, 'version': __version__, 'status': status, 'hostname': self.hostname, 'cwd': self.cwd, 'script_path': self.script_path, 'script': self.script, 'comment': self.comment, 'time': self.time, }, **kwargs))) except: warn('Unable to connect to \'{0}:{1}\'.'.format(self.server, self.port))
Example #11
Source File: AuroraAPI.py From aurora-sdk-mac with Apache License 2.0 | 6 votes |
def send(verb, endpoint, body): __API_LISTENER = __IP_ADDR + ":" + __PORT iprint("sending to: " + __API_LISTENER) try: conn = httplib.HTTPConnection(__API_LISTENER) if len(body) != 0: conn.request( verb, endpoint, body, {"Content-Type": "application/json"} ) else : conn.request(verb, endpoint) response = conn.getresponse() body = response.read() return response.status, response.reason, body except (httplib.HTTPException, socket.error) as ex: print ("Error: %s" % ex) quit()
Example #12
Source File: connection.py From neo4jdb-python with MIT License | 6 votes |
def _http_req(self, method, path, payload=None, retries=2): serialized_payload = json.dumps(payload) if payload is not None else None try: self._http.request(method, path, serialized_payload, self._COMMON_HEADERS) http_response = self._http.getresponse() except (http.BadStatusLine, http.CannotSendRequest): self._http = http.HTTPConnection(self._host) if retries > 0: return self._http_req(method, path, payload, retries-1) self._handle_error(self, None, Connection.OperationalError, "Connection has expired.") if not http_response.status in [200, 201]: message = "Server returned unexpected response: " + ustr(http_response.status) + ustr(http_response.read()) self._handle_error(self, None, Connection.OperationalError, message) return http_response
Example #13
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_epipe(self): sock = EPipeSocket( "HTTP/1.0 401 Authorization Required\r\n" "Content-type: text/html\r\n" "WWW-Authenticate: Basic realm=\"example\"\r\n", b"Content-Length") conn = client.HTTPConnection("example.com") conn.sock = sock self.assertRaises(OSError, lambda: conn.request("PUT", "/url", "body")) resp = conn.getresponse() self.assertEqual(401, resp.status) self.assertEqual("Basic realm=\"example\"", resp.getheader("www-authenticate")) # Test lines overflowing the max line size (_MAXLINE in http.client)
Example #14
Source File: zerotier.py From Paradrop with Apache License 2.0 | 6 votes |
def manage_network(nwid, action="join"): """ Join or leave a ZeroTier network. nwid: ZeroTier network ID, e.g. "e5cd7a9e1c8a5e83" action: either "join" or "leave" """ if action == "join": method = "POST" elif action == "leave": method = "DELETE" else: raise Exception("Unsupported action: {}".format(action)) conn = HTTPConnection("localhost", 9993) path = "/network/{}".format(nwid) body = "{}" headers = { "Content-Type": "application/json", "X-ZT1-Auth": get_auth_token() } conn.request(method, path, body, headers) res = conn.getresponse() data = json.loads(res.read()) return data
Example #15
Source File: test_httplib.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_host_port(self): # Check invalid host_port for hp in ("www.python.org:abc", "user:password@www.python.org"): self.assertRaises(client.InvalidURL, client.HTTPConnection, hp) for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000", "fe80::207:e9ff:fe9b", 8000), ("www.python.org:80", "www.python.org", 80), ("www.python.org:", "www.python.org", 80), ("www.python.org", "www.python.org", 80), ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 80), ("[fe80::207:e9ff:fe9b]:", "fe80::207:e9ff:fe9b", 80)): c = client.HTTPConnection(hp) self.assertEqual(h, c.host) self.assertEqual(p, c.port)
Example #16
Source File: test_httplib.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_send_updating_file(self): def data(): yield 'data' yield None yield 'data_two' class UpdatingFile(): mode = 'r' d = data() def read(self, blocksize=-1): return self.d.__next__() expected = b'data' conn = client.HTTPConnection('example.com') sock = FakeSocket("") conn.sock = sock conn.send(UpdatingFile()) self.assertEqual(sock.data, expected)
Example #17
Source File: fishnet.py From irwin with GNU Affero General Public License v3.0 | 6 votes |
def http(method, url, body=None, headers=None): url_info = urlparse.urlparse(url) if url_info.scheme == "https": con = httplib.HTTPSConnection(url_info.hostname, url_info.port or 443) else: con = httplib.HTTPConnection(url_info.hostname, url_info.port or 80) con.request(method, url_info.path, body, headers) response = con.getresponse() try: if 400 <= response.status < 500: raise HttpClientError(response.status, response.reason, response.read()) elif 500 <= response.status < 600: raise HttpServerError(response.status, response.reason, response.read()) else: yield response finally: con.close()
Example #18
Source File: blockade.py From telemetry-analysis-service with Mozilla Public License 2.0 | 6 votes |
def block_http(whitelist): def whitelisted(self, host, *args, **kwargs): try: string_type = basestring except NameError: # python3 string_type = str if isinstance(host, string_type) and host not in whitelist: logger.warning("Denied HTTP connection to: %s" % host) raise MockHttpCall(host) logger.debug("Allowed HTTP connection to: %s" % host) return self.old(host, *args, **kwargs) whitelisted.blockade = True if not getattr(httplib.HTTPConnection, "blockade", False): logger.debug("Monkey patching httplib") httplib.HTTPConnection.old = httplib.HTTPConnection.__init__ httplib.HTTPConnection.__init__ = whitelisted
Example #19
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_send_type_error(self): # See: Issue #12676 conn = client.HTTPConnection('example.com') conn.sock = FakeSocket('') with self.assertRaises(TypeError): conn.request('POST', 'test', conn)
Example #20
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_send_iter(self): expected = b'GET /foo HTTP/1.1\r\nHost: example.com\r\n' \ b'Accept-Encoding: identity\r\nContent-Length: 11\r\n' \ b'\r\nonetwothree' def body(): yield b"one" yield b"two" yield b"three" conn = client.HTTPConnection('example.com') sock = FakeSocket("") conn.sock = sock conn.request('GET', '/foo', body(), {'Content-Length': '11'}) self.assertEqual(sock.data, expected)
Example #21
Source File: test_httplib.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_putheader(self): conn = client.HTTPConnection('example.com') conn.sock = FakeSocket(None) conn.putrequest('GET','/') conn.putheader('Content-length', 42) self.assertIn(b'Content-length: 42', conn._buffer) conn.putheader('Foo', ' bar ') self.assertIn(b'Foo: bar ', conn._buffer) conn.putheader('Bar', '\tbaz\t') self.assertIn(b'Bar: \tbaz\t', conn._buffer) conn.putheader('Authorization', 'Bearer mytoken') self.assertIn(b'Authorization: Bearer mytoken', conn._buffer) conn.putheader('IterHeader', 'IterA', 'IterB') self.assertIn(b'IterHeader: IterA\r\n\tIterB', conn._buffer) conn.putheader('LatinHeader', b'\xFF') self.assertIn(b'LatinHeader: \xFF', conn._buffer) conn.putheader('Utf8Header', b'\xc3\x80') self.assertIn(b'Utf8Header: \xc3\x80', conn._buffer) conn.putheader('C1-Control', b'next\x85line') self.assertIn(b'C1-Control: next\x85line', conn._buffer) conn.putheader('Embedded-Fold-Space', 'is\r\n allowed') self.assertIn(b'Embedded-Fold-Space: is\r\n allowed', conn._buffer) conn.putheader('Embedded-Fold-Tab', 'is\r\n\tallowed') self.assertIn(b'Embedded-Fold-Tab: is\r\n\tallowed', conn._buffer) conn.putheader('Key Space', 'value') self.assertIn(b'Key Space: value', conn._buffer) conn.putheader('KeySpace ', 'value') self.assertIn(b'KeySpace : value', conn._buffer) conn.putheader(b'Nonbreak\xa0Space', 'value') self.assertIn(b'Nonbreak\xa0Space: value', conn._buffer) conn.putheader(b'\xa0NonbreakSpace', 'value') self.assertIn(b'\xa0NonbreakSpace: value', conn._buffer)
Example #22
Source File: test_httplib.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_auto_headers(self): # Some headers are added automatically, but should not be added by # .request() if they are explicitly set. class HeaderCountingBuffer(list): def __init__(self): self.count = {} def append(self, item): kv = item.split(b':') if len(kv) > 1: # item is a 'Key: Value' header string lcKey = kv[0].decode('ascii').lower() self.count.setdefault(lcKey, 0) self.count[lcKey] += 1 list.append(self, item) for explicit_header in True, False: for header in 'Content-length', 'Host', 'Accept-encoding': conn = client.HTTPConnection('example.com') conn.sock = FakeSocket('blahblahblah') conn._buffer = HeaderCountingBuffer() body = 'spamspamspam' headers = {} if explicit_header: headers[header] = str(len(body)) conn.request('POST', '/', body, headers) self.assertEqual(conn._buffer.count[header.lower()], 1)
Example #23
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def setUp(self): self.conn = client.HTTPConnection('example.com') self.conn.sock = self.sock = FakeSocket("") self.conn.sock = self.sock
Example #24
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_send(self): expected = b'this is a test this is only a test' conn = client.HTTPConnection('example.com') sock = FakeSocket(None) conn.sock = sock conn.send(expected) self.assertEqual(expected, sock.data) sock.data = b'' conn.send(array.array('b', expected)) self.assertEqual(expected, sock.data) sock.data = b'' conn.send(io.BytesIO(expected)) self.assertEqual(expected, sock.data)
Example #25
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_invalid_headers(self): conn = client.HTTPConnection('example.com') conn.sock = FakeSocket('') conn.putrequest('GET', '/') # http://tools.ietf.org/html/rfc7230#section-3.2.4, whitespace is no # longer allowed in header names cases = ( (b'Invalid\r\nName', b'ValidValue'), (b'Invalid\rName', b'ValidValue'), (b'Invalid\nName', b'ValidValue'), (b'\r\nInvalidName', b'ValidValue'), (b'\rInvalidName', b'ValidValue'), (b'\nInvalidName', b'ValidValue'), (b' InvalidName', b'ValidValue'), (b'\tInvalidName', b'ValidValue'), (b'Invalid:Name', b'ValidValue'), (b':InvalidName', b'ValidValue'), (b'ValidName', b'Invalid\r\nValue'), (b'ValidName', b'Invalid\rValue'), (b'ValidName', b'Invalid\nValue'), (b'ValidName', b'InvalidValue\r\n'), (b'ValidName', b'InvalidValue\r'), (b'ValidName', b'InvalidValue\n'), ) for name, value in cases: with self.subTest((name, value)): with self.assertRaisesRegex(ValueError, 'Invalid header'): conn.putheader(name, value)
Example #26
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_putheader(self): conn = client.HTTPConnection('example.com') conn.sock = FakeSocket(None) conn.putrequest('GET','/') conn.putheader('Content-length', 42) self.assertIn(b'Content-length: 42', conn._buffer) conn.putheader('Foo', ' bar ') self.assertIn(b'Foo: bar ', conn._buffer) conn.putheader('Bar', '\tbaz\t') self.assertIn(b'Bar: \tbaz\t', conn._buffer) conn.putheader('Authorization', 'Bearer mytoken') self.assertIn(b'Authorization: Bearer mytoken', conn._buffer) conn.putheader('IterHeader', 'IterA', 'IterB') self.assertIn(b'IterHeader: IterA\r\n\tIterB', conn._buffer) conn.putheader('LatinHeader', b'\xFF') self.assertIn(b'LatinHeader: \xFF', conn._buffer) conn.putheader('Utf8Header', b'\xc3\x80') self.assertIn(b'Utf8Header: \xc3\x80', conn._buffer) conn.putheader('C1-Control', b'next\x85line') self.assertIn(b'C1-Control: next\x85line', conn._buffer) conn.putheader('Embedded-Fold-Space', 'is\r\n allowed') self.assertIn(b'Embedded-Fold-Space: is\r\n allowed', conn._buffer) conn.putheader('Embedded-Fold-Tab', 'is\r\n\tallowed') self.assertIn(b'Embedded-Fold-Tab: is\r\n\tallowed', conn._buffer) conn.putheader('Key Space', 'value') self.assertIn(b'Key Space: value', conn._buffer) conn.putheader('KeySpace ', 'value') self.assertIn(b'KeySpace : value', conn._buffer) conn.putheader(b'Nonbreak\xa0Space', 'value') self.assertIn(b'Nonbreak\xa0Space: value', conn._buffer) conn.putheader(b'\xa0NonbreakSpace', 'value') self.assertIn(b'\xa0NonbreakSpace: value', conn._buffer)
Example #27
Source File: test_httplib.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_auto_headers(self): # Some headers are added automatically, but should not be added by # .request() if they are explicitly set. class HeaderCountingBuffer(list): def __init__(self): self.count = {} def append(self, item): kv = item.split(b':') if len(kv) > 1: # item is a 'Key: Value' header string lcKey = kv[0].decode('ascii').lower() self.count.setdefault(lcKey, 0) self.count[lcKey] += 1 list.append(self, item) for explicit_header in True, False: for header in 'Content-length', 'Host', 'Accept-encoding': conn = client.HTTPConnection('example.com') conn.sock = FakeSocket('blahblahblah') conn._buffer = HeaderCountingBuffer() body = 'spamspamspam' headers = {} if explicit_header: headers[header] = str(len(body)) conn.request('POST', '/', body, headers) self.assertEqual(conn._buffer.count[header.lower()], 1)
Example #28
Source File: connection.py From neo4jdb-python with MIT License | 5 votes |
def __init__(self, db_uri): self.errorhandler = default_error_handler self._host = urlparse(db_uri).netloc self._http = http.HTTPConnection(self._host) self._tx = TX_ENDPOINT self._messages = [] self._cursors = set() self._cursor_ids = 0
Example #29
Source File: pavement.py From neo4jdb-python with MIT License | 5 votes |
def change_password(): """ Changes the standard password from neo4j to testing to be able to run the test suite. """ basic_auth = '%s:%s' % (DEFAULT_USERNAME, DEFAULT_PASSWORD) try: # Python 2 auth = base64.encodestring(basic_auth) except TypeError: # Python 3 auth = base64.encodestring(bytes(basic_auth, 'utf-8')).decode() headers = { "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Basic %s" % auth.strip() } response = None retry = 0 while not response: # Retry if the server is not ready yet sleep(1) con = http.HTTPConnection('localhost:7474', timeout=10) try: con.request('GET', 'http://localhost:7474/user/neo4j', headers=headers) response = json.loads(con.getresponse().read().decode('utf-8')) except ValueError: con.close() retry += 1 if retry > 10: print("Could not change password for user neo4j") break if response and response.get('password_change_required', None): payload = json.dumps({'password': 'testing'}) con.request('POST', 'http://localhost:7474/user/neo4j/password', payload, headers) print("Password changed for user neo4j") con.close()
Example #30
Source File: sms.py From django-db-mailer with GNU General Public License v2.0 | 5 votes |
def send(sms_to, sms_body, **kwargs): """ Site: http://smsaero.ru/ API: http://smsaero.ru/api/ """ headers = { "User-Agent": "DBMail/%s" % get_version(), } kwargs.update({ 'user': settings.SMSAERO_LOGIN, 'password': settings.SMSAERO_MD5_PASSWORD, 'from': kwargs.pop('sms_from', settings.SMSAERO_FROM), 'to': sms_to.replace('+', ''), 'text': from_unicode(sms_body), 'answer': 'json', }) http = HTTPConnection(kwargs.pop("api_url", "gate.smsaero.ru")) http.request("GET", "/send/?" + urlencode(kwargs), headers=headers) response = http.getresponse() if response.status != 200: raise AeroSmsError(response.reason) read = response.read().decode(response.headers.get_content_charset()) data = json.loads(read) status = None if 'result' in data: status = data['result'] sms_id = None if 'id' in data: sms_id = data['id'] if sms_id and status == 'accepted': return True return False