Source code for globus_sdk.local_endpoint.personal
import os
from globus_sdk.exc import GlobusSDKUsageError
def _on_windows():
"""
Per python docs, this is a safe, reliable way of checking the platform.
sys.platform offers more detail -- more than we want, in this case.
"""
return os.name == "nt"
[docs]class LocalGlobusConnectPersonal:
r"""
A LocalGlobusConnectPersonal object represents the available SDK methods
for inspecting and controlling a running Globus Connect Personal
installation.
These objects do *not* inherit from BaseClient and do not provide methods
for interacting with any Globus Service APIs.
"""
def __init__(self):
self._endpoint_id = None
@property
def endpoint_id(self):
"""
:type: string
The endpoint ID of the local Globus Connect Personal endpoint
installation.
This value is loaded whenever it is first accessed, but saved after
that.
Usage:
>>> from globus_sdk import TransferClient, LocalGlobusConnectPersonal
>>> local_ep = LocalGlobusConnectPersonal()
>>> ep_id = local_ep.endpoint_id
>>> tc = TransferClient(...) # needs auth details
>>> for f in tc.operation_ls(ep_id):
>>> print("Local file: ", f["name"])
You can also reset the value, causing it to load again on next access,
with ``del local_ep.endpoint_id``
"""
if self._endpoint_id is None:
try:
if _on_windows():
appdata = os.getenv("LOCALAPPDATA")
if appdata is None:
raise GlobusSDKUsageError(
"LOCALAPPDATA not detected in Windows environment"
)
fname = os.path.join(appdata, "Globus Connect\\client-id.txt")
else:
fname = os.path.expanduser("~/.globusonline/lta/client-id.txt")
with open(fname) as fp:
self._endpoint_id = fp.read().strip()
except OSError as e:
# no such file or directory
if e.errno == 2:
pass
else:
raise
return self._endpoint_id
@endpoint_id.deleter
def endpoint_id(self):
"""
Deleter for LocalGlobusConnectPersonal.endpoint_id
"""
self._endpoint_id = None