38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package agent
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/livekit/protocol/auth"
|
|
"github.com/livekit/protocol/livekit"
|
|
)
|
|
|
|
func BuildAgentToken(
|
|
apiKey, secret, roomName, participantIdentity, participantName, participantMetadata string,
|
|
participantAttributes map[string]string,
|
|
permissions *livekit.ParticipantPermission,
|
|
) (string, error) {
|
|
grant := &auth.VideoGrant{
|
|
RoomJoin: true,
|
|
Agent: true,
|
|
Room: roomName,
|
|
CanSubscribe: &permissions.CanSubscribe,
|
|
CanPublish: &permissions.CanPublish,
|
|
CanPublishData: &permissions.CanPublishData,
|
|
Hidden: permissions.Hidden,
|
|
CanUpdateOwnMetadata: &permissions.CanUpdateMetadata,
|
|
CanSubscribeMetrics: &permissions.CanSubscribeMetrics,
|
|
}
|
|
|
|
at := auth.NewAccessToken(apiKey, secret).
|
|
AddGrant(grant).
|
|
SetIdentity(participantIdentity).
|
|
SetName(participantName).
|
|
SetKind(livekit.ParticipantInfo_AGENT).
|
|
SetValidFor(1 * time.Hour).
|
|
SetMetadata(participantMetadata).
|
|
SetAttributes(participantAttributes)
|
|
|
|
return at.ToJWT()
|
|
}
|