summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/matrix-org/gomatrix/identifier.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/matrix-org/gomatrix/identifier.go')
-rw-r--r--vendor/github.com/matrix-org/gomatrix/identifier.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/vendor/github.com/matrix-org/gomatrix/identifier.go b/vendor/github.com/matrix-org/gomatrix/identifier.go
new file mode 100644
index 00000000..4a61d080
--- /dev/null
+++ b/vendor/github.com/matrix-org/gomatrix/identifier.go
@@ -0,0 +1,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,
+ }
+}