84 lines
2.0 KiB
Go
84 lines
2.0 KiB
Go
|
// Copyright (c) 2020 Tulir Asokan
|
||
|
//
|
||
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
||
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||
|
|
||
|
package id
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
// A RoomID is a string starting with ! that references a specific room.
|
||
|
// https://matrix.org/docs/spec/appendices#room-ids-and-event-ids
|
||
|
type RoomID string
|
||
|
|
||
|
// A RoomAlias is a string starting with # that can be resolved into.
|
||
|
// https://matrix.org/docs/spec/appendices#room-aliases
|
||
|
type RoomAlias string
|
||
|
|
||
|
func NewRoomAlias(localpart, server string) RoomAlias {
|
||
|
return RoomAlias(fmt.Sprintf("#%s:%s", localpart, server))
|
||
|
}
|
||
|
|
||
|
// An EventID is a string starting with $ that references a specific event.
|
||
|
//
|
||
|
// https://matrix.org/docs/spec/appendices#room-ids-and-event-ids
|
||
|
// https://matrix.org/docs/spec/rooms/v4#event-ids
|
||
|
type EventID string
|
||
|
|
||
|
// A BatchID is a string identifying a batch of events being backfilled to a room.
|
||
|
// https://github.com/matrix-org/matrix-doc/pull/2716
|
||
|
type BatchID string
|
||
|
|
||
|
func (roomID RoomID) String() string {
|
||
|
return string(roomID)
|
||
|
}
|
||
|
|
||
|
func (roomID RoomID) URI(via ...string) *MatrixURI {
|
||
|
return &MatrixURI{
|
||
|
Sigil1: '!',
|
||
|
MXID1: string(roomID)[1:],
|
||
|
Via: via,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (roomID RoomID) EventURI(eventID EventID, via ...string) *MatrixURI {
|
||
|
return &MatrixURI{
|
||
|
Sigil1: '!',
|
||
|
MXID1: string(roomID)[1:],
|
||
|
Sigil2: '$',
|
||
|
MXID2: string(eventID)[1:],
|
||
|
Via: via,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (roomAlias RoomAlias) String() string {
|
||
|
return string(roomAlias)
|
||
|
}
|
||
|
|
||
|
func (roomAlias RoomAlias) URI() *MatrixURI {
|
||
|
return &MatrixURI{
|
||
|
Sigil1: '#',
|
||
|
MXID1: string(roomAlias)[1:],
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (roomAlias RoomAlias) EventURI(eventID EventID) *MatrixURI {
|
||
|
return &MatrixURI{
|
||
|
Sigil1: '#',
|
||
|
MXID1: string(roomAlias)[1:],
|
||
|
Sigil2: '$',
|
||
|
MXID2: string(eventID)[1:],
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (eventID EventID) String() string {
|
||
|
return string(eventID)
|
||
|
}
|
||
|
|
||
|
func (batchID BatchID) String() string {
|
||
|
return string(batchID)
|
||
|
}
|