summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/matrix-org/gomatrix/identifier.go
blob: 4a61d08050cabb26bceedc61748f9153391b9ce0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package gomatrix

// Identifier is the interface for https://matrix.org/docs/spec/client_server/r0.6.0#identifier-types
type Identifier interface {
	// Returns the identifier type
	// https://matrix.org/docs/spec/client_server/r0.6.0#identifier-types
	Type() string
}

// UserIdentifier is the Identifier for https://matrix.org/docs/spec/client_server/r0.6.0#matrix-user-id
type UserIdentifier struct {
	IDType string `json:"type"` // Set by NewUserIdentifer
	User   string `json:"user"`
}

// Type implements the Identifier interface
func (i UserIdentifier) Type() string {
	return "m.id.user"
}

// NewUserIdentifier creates a new UserIdentifier with IDType set to "m.id.user"
func NewUserIdentifier(user string) UserIdentifier {
	return UserIdentifier{
		IDType: "m.id.user",
		User:   user,
	}
}

// ThirdpartyIdentifier is the Identifier for https://matrix.org/docs/spec/client_server/r0.6.0#third-party-id
type ThirdpartyIdentifier struct {
	IDType  string `json:"type"` // Set by NewThirdpartyIdentifier
	Medium  string `json:"medium"`
	Address string `json:"address"`
}

// Type implements the Identifier interface
func (i ThirdpartyIdentifier) Type() string {
	return "m.id.thirdparty"
}

// NewThirdpartyIdentifier creates a new UserIdentifier with IDType set to "m.id.user"
func NewThirdpartyIdentifier(medium, address string) ThirdpartyIdentifier {
	return ThirdpartyIdentifier{
		IDType:  "m.id.thirdparty",
		Medium:  medium,
		Address: address,
	}
}

// PhoneIdentifier is the Identifier for https://matrix.org/docs/spec/client_server/r0.6.0#phone-number
type PhoneIdentifier struct {
	IDType  string `json:"type"` // Set by NewPhoneIdentifier
	Country string `json:"country"`
	Phone   string `json:"phone"`
}

// Type implements the Identifier interface
func (i PhoneIdentifier) Type() string {
	return "m.id.phone"
}

// NewPhoneIdentifier creates a new UserIdentifier with IDType set to "m.id.user"
func NewPhoneIdentifier(country, phone string) PhoneIdentifier {
	return PhoneIdentifier{
		IDType:  "m.id.phone",
		Country: country,
		Phone:   phone,
	}
}