Skip to content

clients.livekit #

livekit

To get started


import freeflowuniverse.herolib.clients.livekit

mut client:= livekit.get()!

client...

example heroscript

!!livekit.configure
    livekit_url:''
    livekit_api_key:''
    livekit_api_secret:''

fn new #

fn new(client Client) Client

struct AccessToken #

struct AccessToken {
mut:
	api_key    string
	api_secret string
	grants     ClaimGrants
	identity   string
	ttl        int
}

AccessToken class

fn (AccessToken) add_video_grant #

fn (mut token AccessToken) add_video_grant(grant VideoGrant)

Method to add a video grant to the token

fn (AccessToken) to_jwt #

fn (token AccessToken) to_jwt() !string

Method to generate a JWT token

struct AccessTokenOptions #

@[params]
struct AccessTokenOptions {
pub mut:
	ttl      int = 21600 // TTL in seconds
	name     string // Display name for the participant
	identity string // Identity of the user
	metadata string // Custom metadata to be passed to participants
}

Define AccessTokenOptions struct

struct ClaimGrants #

struct ClaimGrants {
pub mut:
	video VideoGrant
	iss   string
	exp   i64
	nbf   int
	sub   string
	name  string
}

Struct representing grants

struct Client #

struct Client {
pub:
	url        string @[required]
	api_key    string @[required]
	api_secret string @[required]
}

App struct with livekit.Client, API keys, and other shared data

fn (Client) list_rooms #

fn (c Client) list_rooms(params ListRoomsParams) !ListRoomsResponse

fn (Client) new_access_token #

fn (client Client) new_access_token(options AccessTokenOptions) !AccessToken

Constructor for AccessToken

struct Codec #

struct Codec {
pub:
	fmtp_line string
	mime      string
}

struct ListRoomsParams #

@[params]
struct ListRoomsParams {
	names []string
}

struct ListRoomsResponse #

struct ListRoomsResponse {
pub:
	rooms []Room
}

struct Room #

struct Room {
pub:
	active_recording  bool
	creation_time     string
	departure_timeout int
	empty_timeout     int
	enabled_codecs    []Codec
	max_participants  int
	metadata          string
	name              string
	num_participants  int
	num_publishers    int
	sid               string
	turn_password     string
	version           Version
}

struct Version #

struct Version {
pub:
	ticks      u64
	unix_micro string
}

struct VideoGrant #

struct VideoGrant {
pub mut:
	room             string
	room_join        bool @[json: 'roomJoin']
	room_list        bool @[json: 'roomList']
	can_publish      bool @[json: 'canPublish']
	can_publish_data bool @[json: 'canPublishData']
	can_subscribe    bool @[json: 'canSubscribe']
}

VideoGrant struct placeholder