Skip to main content

Client for the XPipe API

Project description

xpipe_client

GitHub license PyPI version

Python client for the XPipe API

Installation

python3 -m pip install xpipe_client

Usage

from xpipe_client import Client

# By default, Client() will read the API key from xpipe_auth on the local filesystem
# and talk to the XPipe API on localhost.  To connect to a remote instance with an API
# key, use Client(token="foo", base_url = "http://servername:21723")
client = Client()

# connection_query accepts glob-based filters on the category, connection name, and connection type
all_connections = client.connection_query()

# Each connection includes uuid, category, connection, and type information
first_connection_uuid = all_connections[0]["uuid"]

# Before any shell commands can be run, a shell session must be started on a connection
client.shell_start(first_connection_uuid)

# Prints {'exitCode': 0, 'stdout': 'hello world', 'stderr': ''}
print(client.shell_exec(first_connection_uuid, "echo hello world"))

# Clean up after ourselves
client.shell_stop(first_connection_uuid)

There's also an async version of the client that can be accessed as AsyncClient:

import asyncio
from xpipe_client import AsyncClient


async def main():
    # By default, AsyncClient() will read the API key from xpipe_auth on the local filesystem
    # and talk to the XPipe API on localhost.  To connect to a remote instance with an API
    # key, use Client(token="foo", base_url = "http://servername:21723")
    client = AsyncClient()

    # connection_query accepts glob-based filters on the category, connection name, and connection type
    all_connections = await client.connection_query()
    
    # Each connection includes uuid, category, connection, and type information
    first_connection_uuid = all_connections[0]["uuid"]
    
    # Before any shell commands can be run, a shell session must be started on a connection
    await client.shell_start(first_connection_uuid)
    
    # Prints {'exitCode': 0, 'stdout': 'hello world', 'stderr': ''}
    print(await client.shell_exec(first_connection_uuid, "echo hello world"))
    
    # Clean up after ourselves
    await client.shell_stop(first_connection_uuid)


if __name__ == "__main__":
    asyncio.run(main())

Tests

To run the test suite, you'll need to define the XPIPE_APIKEY env var. This will allow the two "log in with the ApiKey rather than Local method" tests to work. Here's the recommended method for running the tests with poetry:

cd /path/to/python_xpipe_client
poetry install
XPIPE_APIKEY=<api_key> poetry run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xpipe_client-0.1.26.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

xpipe_client-0.1.26-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file xpipe_client-0.1.26.tar.gz.

File metadata

  • Download URL: xpipe_client-0.1.26.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.0 Windows/10

File hashes

Hashes for xpipe_client-0.1.26.tar.gz
Algorithm Hash digest
SHA256 b45cf3ef082bac2b880e1002c3f37a5cc0bd31973e9eb015339de4f5329e9a46
MD5 4e97bd924c1eda024ec8092290afaf14
BLAKE2b-256 7baeef42045e9b5e46957e01c960007657bd76e826b72165dcd7dcf8e764c113

See more details on using hashes here.

File details

Details for the file xpipe_client-0.1.26-py3-none-any.whl.

File metadata

  • Download URL: xpipe_client-0.1.26-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.0 Windows/10

File hashes

Hashes for xpipe_client-0.1.26-py3-none-any.whl
Algorithm Hash digest
SHA256 e3cfe7511c1268254fb1fd1ac39ece8916715af662439dbc5dd9f2be75dcaefc
MD5 5ed28b6e091d0e133f35f258bac8bff6
BLAKE2b-256 9aff9df2c67f84b0fba703c29c49777a73ebb25e8e728a2468423c5a5f880bb3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page