[][src]Crate ts3_query

Ts3 query library
Small, bare-metal ts query lib without any callback support currently.

A connectivity checking wrapper is available under managed when enabling its feature.

Examples

Simple auth + clients of a server group

use ts3_query::*;

let mut client = QueryClient::new("localhost:10011")?;

client.login("serveradmin", "password")?;
client.select_server_by_port(9987)?;

let group_clients = client.servergroup_client_cldbids(7)?;
println!("Got clients in group 7: {:?}",group_clients);

client.logout()?;

Using the raw interface for setting client descriptions.

use ts3_query::*;

let mut client = QueryClient::new("localhost:10011")?;

client.login("serveradmin", "password")?;
client.select_server_by_port(9987)?;

// escape things like string args, not required for clid
// as it's not user input/special chars in this case
let cmd = format!("clientedit clid={} client_description={}",
 7, raw::escape_arg("Some Description!")
);
// we don't expect any value returned
let _ = client.raw_command(&cmd)?;

client.logout()?;

Raw interface example retrieving online client names

use ts3_query::*;
use std::collections::HashSet;

let mut client = QueryClient::new("localhost:10011")?;

client.login("serveradmin", "password")?;
client.select_server_by_port(9987)?;

let mut res = raw::parse_multi_hashmap(client.raw_command("clientlist")?, false);
let names = res
    .into_iter()
    .map(|mut e| e.remove("client_nickname")
    // ignore empty value & unescape
    .unwrap().map(raw::unescape_val)
     // may want to catch this in a real application
        .unwrap())
    .collect::<HashSet<String>>();
println!("{:?}",names);
client.logout()?;

Modules

managedmanaged

Managed connection module. Handles reconnection and name uniqueness. Wraps a normal query connection with health checks. Handles renaming and claimed names. Useful if running long-lasting connections which tend to break over the wire.

raw

Module with helpers for raw-calls

Structs

Channel
ChannelFull
ErrorResponse

Server error response

OnlineClient
OnlineClientFull
QueryClient

Ts3 Query client with active connection

ServerGroup

Server Group returned from server_group_list. Field names are according to the query protocol.

Enums

MessageTarget

Target for message sending

Ts3Error

Constants

LIMIT_LINE_BYTES

Default DoS limit for read bytes per line

LIMIT_READ_LINES

Default DoS limit for read lines

Type Definitions

ChannelGroupId
ChannelId
ClientDBId

Server interal ID for client, not it's Identity / MyTeamspeak ID.

ClientId

Temporary, per connection ID of a client, reused upon disconnect.
Not to be confused with a client database, myteamspeak or identity ID.

IconHash

CRC32 checksum of the channel icon, but received as i64 instead of u64, except when using clientdbinfo

ServerGroupID
ServerId