Rename new environment variables to use standard PY_IPFS_HTTP_CLIENT_DEFAULT prefix and update docs

This commit is contained in:
c0llab0rat0r
2021-05-28 23:43:11 -05:00
committed by Alexander Schlarb
parent e7b5e55727
commit 3bb169acaa
6 changed files with 24 additions and 25 deletions

View File

@@ -87,5 +87,5 @@ generation and publish process:
If you are publishing to an IPFS server that is remote, and protected by an HTTP reverse proxy
with TLS and basic authentication, run this instead:
$ IPFS_API_MULTI_ADDR=/dns/yourserver.tld/tcp/5001/https IPFS_API_USERNAME=basicauthuser IPFS_API_PASSWORD=basicauthpassword python publish.py ipns-key-id
$ PY_IPFS_HTTP_CLIENT_DEFAULT_ADDR=/dns/yourserver.tld/tcp/5001/https PY_IPFS_HTTP_CLIENT_DEFAULT_USERNAME=basicauthuser PY_IPFS_HTTP_CLIENT_DEFAULT_PASSWORD=basicauthpassword python publish.py ipns-key-id

View File

@@ -1,12 +1,12 @@
#!/usr/bin/python3
import os
import sphinx.cmd.build
import sys
import typing as ty
script_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(script_dir, ".."))
import sphinx.cmd.build
import ipfshttpclient
os.chdir(script_dir)
@@ -20,26 +20,21 @@ def main(argv: ty.List[str]) -> int:
print("Usage: {0} [IPNS-key]".format(os.path.basename(__file__)))
print()
print('To connect to a remote IPFS daemon, set environment variables:')
print()
print(' PY_IPFS_HTTP_CLIENT_DEFAULT_ADDR')
print(' PY_IPFS_HTTP_CLIENT_DEFAULT_USERNAME')
print(' PY_IPFS_HTTP_CLIENT_DEFAULT_PASSWORD')
print()
print("!! Continuing without publishing to IPNS !!")
print()
ipfs_api_address: str = os.getenv('IPFS_API_MULTI_ADDR', str(ipfshttpclient.DEFAULT_ADDR))
ipfs_api_username: ty.Optional[str] = os.getenv('IPFS_API_USERNAME', None)
ipfs_api_password: ty.Optional[str] = os.getenv('IPFS_API_PASSWORD', None)
return publish(
ipfs_api_address=ipfs_api_address,
ipfs_api_username=ipfs_api_username,
ipfs_api_password=ipfs_api_password,
ipns_key=ipns_key
)
def publish(
ipfs_api_address: str,
ipfs_api_username: ty.Optional[str],
ipfs_api_password: ty.Optional[str],
ipns_key: ty.Optional[str]) -> int:
def publish(ipns_key: ty.Optional[str]) -> int:
# Invoke Sphinx like the Makefile does
result = sphinx.cmd.build.build_main([
"-b", "html",
@@ -52,8 +47,8 @@ def publish(
return result
print()
print(f"Exporting files to IPFS server at {ipfs_api_address}")
client = ipfshttpclient.connect(addr=ipfs_api_address, username=ipfs_api_username, password=ipfs_api_password)
print(f"Exporting files to IPFS server at {ipfshttpclient.DEFAULT_ADDR}")
client = ipfshttpclient.connect()
hash_docs = client.add("build/html", recursive=True, raw_leaves=True, pin=False)[-1]["Hash"]
hash_main = client.object.new("unixfs-dir")["Hash"]
hash_main = client.object.patch.add_link(hash_main, "docs", hash_docs)["Hash"]

View File

@@ -8,6 +8,9 @@ from .version import __version__
###################################
from . import exceptions
from .client import DEFAULT_ADDR, DEFAULT_BASE
from .client import DEFAULT_ADDR, \
DEFAULT_BASE, \
DEFAULT_USERNAME, \
DEFAULT_PASSWORD
from .client import VERSION_MINIMUM, VERSION_MAXIMUM
from .client import Client, assert_version, connect

View File

@@ -13,6 +13,8 @@ import multiaddr
DEFAULT_ADDR = multiaddr.Multiaddr(os.environ.get("PY_IPFS_HTTP_CLIENT_DEFAULT_ADDR", '/dns/localhost/tcp/5001/http'))
DEFAULT_BASE = str(os.environ.get("PY_IPFS_HTTP_CLIENT_DEFAULT_BASE", 'api/v0'))
DEFAULT_USERNAME: ty.Optional[str] = os.getenv('PY_IPFS_HTTP_CLIENT_DEFAULT_USERNAME', None)
DEFAULT_PASSWORD: ty.Optional[str] = os.getenv('PY_IPFS_HTTP_CLIENT_DEFAULT_PASSWORD', None)
# This range inclusive-exclusive, so the daemon version must match
# `VERSION_MINIMUM <= version < VERSION_MAXIMUM`
@@ -91,9 +93,8 @@ def connect(
headers: http.headers_t = {},
timeout: http.timeout_t = 120,
# Backward-compatibility
username: ty.Optional[str] = None,
password: ty.Optional[str] = None
username: ty.Optional[str] = DEFAULT_USERNAME,
password: ty.Optional[str] = DEFAULT_PASSWORD
):
"""Create a new :class:`~ipfshttpclient.Client` instance and connect to the
daemon to validate that its version is supported as well as applying any

View File

@@ -4,7 +4,7 @@ import typing as ty
import multiaddr # type: ignore[import]
from . import DEFAULT_ADDR, DEFAULT_BASE
from . import DEFAULT_ADDR, DEFAULT_BASE, DEFAULT_USERNAME, DEFAULT_PASSWORD
from .. import multipart, http, utils
from ..http_common import ClientSyncBase
@@ -337,9 +337,8 @@ class ClientBase:
headers: http.headers_t = {}, # type: ignore[assignment] # False positive
timeout: http.timeout_t = 120,
# Backward-compat
username: ty.Optional[str] = None,
password: ty.Optional[str] = None
username: ty.Optional[str] = DEFAULT_USERNAME,
password: ty.Optional[str] = DEFAULT_PASSWORD
):
"""
Arguments

View File

@@ -368,7 +368,8 @@ def test_session(http_client, http_server):
assert http_client._session is None
try:
http_client.open_session()
http_client._session is not None
assert http_client._session is not None
res = http_client.request("/okay")
assert res == b"okay"
finally: