2022-01-13 15:56:54 -08:00
|
|
|
import os
|
2024-02-10 00:20:43 -08:00
|
|
|
import socket
|
|
|
|
|
from urllib.parse import urlparse
|
2024-01-16 20:24:37 -05:00
|
|
|
|
2023-08-20 20:49:55 -07:00
|
|
|
from openpilot.tools.lib.url_file import URLFile
|
2020-07-20 17:10:08 +02:00
|
|
|
|
2022-08-29 13:31:43 -07:00
|
|
|
DATA_ENDPOINT = os.getenv("DATA_ENDPOINT", "http://data-raw.comma.internal/")
|
2022-01-13 15:56:54 -08:00
|
|
|
|
2024-02-14 03:56:17 -06:00
|
|
|
|
2024-02-10 00:20:43 -08:00
|
|
|
def internal_source_available():
|
|
|
|
|
try:
|
|
|
|
|
hostname = urlparse(DATA_ENDPOINT).hostname
|
2024-05-13 16:02:28 -07:00
|
|
|
port = urlparse(DATA_ENDPOINT).port or 80
|
|
|
|
|
with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as s:
|
|
|
|
|
s.connect((hostname, port))
|
|
|
|
|
return True
|
|
|
|
|
except (socket.gaierror, ConnectionRefusedError):
|
2024-02-10 00:20:43 -08:00
|
|
|
pass
|
|
|
|
|
return False
|
|
|
|
|
|
2024-02-14 03:56:17 -06:00
|
|
|
|
2023-10-05 19:45:46 -07:00
|
|
|
def resolve_name(fn):
|
2022-01-13 15:56:54 -08:00
|
|
|
if fn.startswith("cd:/"):
|
2023-10-05 19:45:46 -07:00
|
|
|
return fn.replace("cd:/", DATA_ENDPOINT)
|
|
|
|
|
return fn
|
|
|
|
|
|
2024-02-14 03:56:17 -06:00
|
|
|
|
2024-01-16 20:24:37 -05:00
|
|
|
def file_exists(fn):
|
|
|
|
|
fn = resolve_name(fn)
|
|
|
|
|
if fn.startswith(("http://", "https://")):
|
2024-01-25 13:26:12 -08:00
|
|
|
return URLFile(fn).get_length_online() != -1
|
2024-01-16 20:24:37 -05:00
|
|
|
return os.path.exists(fn)
|
|
|
|
|
|
2024-02-14 03:56:17 -06:00
|
|
|
|
2023-10-05 19:45:46 -07:00
|
|
|
def FileReader(fn, debug=False):
|
|
|
|
|
fn = resolve_name(fn)
|
2023-08-10 15:28:51 -07:00
|
|
|
if fn.startswith(("http://", "https://")):
|
2020-02-24 21:24:54 -05:00
|
|
|
return URLFile(fn, debug=debug)
|
2021-07-22 12:08:56 -07:00
|
|
|
return open(fn, "rb")
|