module Terminalwire::Client
def self.authority(url)
def self.authority(url) if url.port == url.default_port url.host else "#{url.host}:#{url.port}" end end
def self.socket(...)
def self.socket(...) socket = UNIXSocket.new(...) transport = Terminalwire::Transport::Socket.new(socket) adapter = Terminalwire::Adapter::Socket.new(transport) Terminalwire::Client::Handler.new(adapter) end
def self.tcp(...)
def self.tcp(...) socket = TCPSocket.new(...) transport = Terminalwire::Transport::Socket.new(socket) adapter = Terminalwire::Adapter::Socket.new(transport) Terminalwire::Client::Handler.new(adapter) end
def self.websocket(url:, arguments: ARGV, entitlement: nil)
def self.websocket(url:, arguments: ARGV, entitlement: nil) url = URI(url) Async do |task| endpoint = Async::HTTP::Endpoint.parse( url, alpn_protocols: Async::HTTP::Protocol::HTTP11.names ) Async::WebSocket::Client.connect(endpoint) do |adapter| transport = Terminalwire::Transport::WebSocket.new(adapter) adapter = Terminalwire::Adapter::Socket.new(transport) entitlement ||= Entitlement.from_url(url) Terminalwire::Client::Handler.new(adapter, arguments:, entitlement:).connect end end end