i2plib/docs/examples/wget.py

42 lines
1.2 KiB
Python

import sys
import asyncio
from urllib.parse import urlparse
import i2plib
async def wget(sam_address, loop, url):
session_name = "wget"
url = urlparse(url)
buflen, resp = 4096, b""
async with i2plib.Session(session_name, sam_address=sam_address, loop=loop):
async with i2plib.StreamConnection(session_name, url.netloc, loop=loop,
sam_address=sam_address) as c:
c.write("GET {} HTTP/1.0\nHost: {}\r\n\r\n".format(
url.path, url.netloc).encode())
while 1:
data = await c.read(buflen)
if len(data) > 0:
resp += data
else:
break
try:
print(resp.split(b"\r\n\r\n", 1)[1].decode())
except IndexError:
print(resp.decode())
if __name__ == "__main__":
if len(sys.argv) == 2:
url = sys.argv[1]
if not url.startswith("http://"):
url = "http://" + url
loop = asyncio.get_event_loop()
loop.run_until_complete(wget(i2plib.get_sam_address(), loop, url))
loop.stop()
loop.close()
else:
print("""Fetch I2P URL. Usage:
python wget.py http://site.i2p/""")