ros_sugar.robot.transports.http

HTTP transport for robot plugins.

Supports sending via POST/PUT and receiving via a polled GET. A WebSocket ingress mode is intentionally out of scope for v1.

Module Contents

Classes

HttpTransport

HTTP transport — sends commands via POST/PUT and optionally polls an endpoint for telemetry.

API

class ros_sugar.robot.transports.http.HttpTransport(name: str, *, base_url: str, send_path: Optional[str] = None, send_method: str = 'POST', poll_path: Optional[str] = None, poll_rate_hz: Optional[float] = None, headers: Optional[Dict[str, str]] = None, timeout: float = 2.0, **kwargs)

Bases: ros_sugar.robot.transports.Transport

HTTP transport — sends commands via POST/PUT and optionally polls an endpoint for telemetry.

Parameters:
  • name (str) – Unique transport name.

  • base_url (str) – Base URL of the robot’s HTTP API (no trailing slash).

  • send_path (Optional[str]) – Path appended to base_url for command requests.

  • send_method (str) – HTTP method for commands (POST or PUT).

  • poll_path (Optional[str]) – Path appended to base_url polled for telemetry.

  • poll_rate_hz (Optional[float]) – Polling rate; required when poll_path is set.

  • headers (Optional[Dict[str, str]]) – Extra headers sent with every request.

  • timeout (float) – Per-request timeout in seconds.

open() None

Start the telemetry poll thread if poll_path is configured.

open_egress() None

No persistent state is needed for sending; just mark open.

close() None

Stop the poll thread.

send(payload: Any) bool

Send payload to base_url + send_path. bytes payloads are sent as-is; anything else is JSON-encoded.

is_open() bool
subscribe(on_msg: Callable[[Any], None]) ros_sugar.robot.transports.SubscriptionHandle
property kind: str