mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-09-19 01:22:30 +00:00
.github
bridge
contrib
docker
gateway
hook
img
internal
matterclient
matterhook
vendor
github.com
42wim
Baozisoftware
Benau
Jeffail
Philipp15b
Rhymen
SevereCloud
apex
av-elier
blang
d5
davecgh
dustin
dyatlov
francoispqt
fsnotify
go-asn1-ber
go-telegram-bot-api
golang
golang-jwt
gomarkdown
google
gopackage
gorilla
harmony-development
hashicorp
jpillora
json-iterator
kettek
keybase
klauspost
kyokomi
labstack
lrstanley
magiconair
matrix-org
matterbridge
mattermost
go-i18n
ldap
logr
mattermost-server
v5
model
access.go
analytics_row.go
at_mentions.go
audit.go
auditconv.go
audits.go
authorize.go
bot.go
builtin.go
bundle_info.go
channel.go
channel_count.go
channel_data.go
channel_list.go
channel_member.go
channel_member_history.go
channel_member_history_result.go
channel_mentions.go
channel_search.go
channel_sidebar.go
channel_stats.go
channel_view.go
client4.go
cloud.go
cluster_discovery.go
cluster_info.go
cluster_message.go
cluster_stats.go
command.go
command_args.go
command_autocomplete.go
command_request.go
command_response.go
command_webhook.go
compliance.go
compliance_post.go
config.go
custom_status.go
data_retention_policy.go
emoji.go
emoji_data.go
emoji_search.go
feature_flags.go
file.go
file_info.go
file_info_list.go
file_info_search_results.go
gitlab.go
group.go
group_member.go
group_syncable.go
guest_invite.go
incoming_webhook.go
initial_load.go
integration_action.go
integrity.go
job.go
ldap.go
license.go
link_metadata.go
manifest.go
marketplace_plugin.go
mention_map.go
message_export.go
mfa_secret.go
migration.go
oauth.go
outgoing_webhook.go
permission.go
plugin_cluster_event.go
plugin_event_data.go
plugin_key_value.go
plugin_kvset_options.go
plugin_status.go
plugin_valid.go
plugins_response.go
post.go
post_embed.go
post_list.go
post_metadata.go
post_search_results.go
preference.go
preferences.go
product_notices.go
push_notification.go
push_response.go
reaction.go
remote_cluster.go
role.go
saml.go
scheduled_task.go
scheme.go
search_params.go
security_bulletin.go
session.go
session_serial_gen.go
shared_channel.go
slack_attachment.go
slack_compatibility.go
status.go
suggest_command.go
switch_request.go
system.go
team.go
team_member.go
team_member_serial_gen.go
team_search.go
team_stats.go
terms_of_service.go
thread.go
token.go
typing_request.go
upload_session.go
user.go
user_access_token.go
user_access_token_search.go
user_autocomplete.go
user_count.go
user_get.go
user_search.go
user_serial_gen.go
user_terms_of_service.go
users_stats.go
utils.go
version.go
websocket_client.go
websocket_message.go
websocket_request.go
services
shared
utils
LICENSE.txt
NOTICE.txt
v6
mattn
mgutz
minio
missdeer
mitchellh
modern-go
monaco-io
mreiferson
mrexodia
nelsonken
paulrosania
pborman
pelletier
philhofer
pkg
pmezard
rickb777
rivo
rs
russross
saintfish
shazow
sirupsen
sizeofint
skip2
slack-go
spf13
stretchr
subosito
tinylib
valyala
vincent-petithory
vmihailenco
wiggin77
writeas
yaegashi
zfjagann
go.uber.org
golang.org
gomod.garykim.dev
google.golang.org
gopkg.in
layeh.com
modules.txt
version
.dockerignore
.fixmie.yml
.gitignore
.golangci.yaml
.goreleaser.yml
Dockerfile
LICENSE
README.md
changelog.md
go.mod
go.sum
matterbridge.go
matterbridge.toml.sample
matterbridge.toml.simple
tgs.Dockerfile
119 lines
3.4 KiB
Go
119 lines
3.4 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package model
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
PUSH_NOTIFY_APPLE = "apple"
|
|
PUSH_NOTIFY_ANDROID = "android"
|
|
PUSH_NOTIFY_APPLE_REACT_NATIVE = "apple_rn"
|
|
PUSH_NOTIFY_ANDROID_REACT_NATIVE = "android_rn"
|
|
|
|
PUSH_TYPE_MESSAGE = "message"
|
|
PUSH_TYPE_CLEAR = "clear"
|
|
PUSH_TYPE_UPDATE_BADGE = "update_badge"
|
|
PUSH_TYPE_SESSION = "session"
|
|
PUSH_MESSAGE_V2 = "v2"
|
|
|
|
PUSH_SOUND_NONE = "none"
|
|
|
|
// The category is set to handle a set of interactive Actions
|
|
// with the push notifications
|
|
CATEGORY_CAN_REPLY = "CAN_REPLY"
|
|
|
|
MHPNS = "https://push.mattermost.com"
|
|
|
|
PUSH_SEND_PREPARE = "Prepared to send"
|
|
PUSH_SEND_SUCCESS = "Successful"
|
|
PUSH_NOT_SENT = "Not Sent due to preferences"
|
|
PUSH_RECEIVED = "Received by device"
|
|
)
|
|
|
|
type PushNotificationAck struct {
|
|
Id string `json:"id"`
|
|
ClientReceivedAt int64 `json:"received_at"`
|
|
ClientPlatform string `json:"platform"`
|
|
NotificationType string `json:"type"`
|
|
PostId string `json:"post_id,omitempty"`
|
|
IsIdLoaded bool `json:"is_id_loaded"`
|
|
}
|
|
|
|
type PushNotification struct {
|
|
AckId string `json:"ack_id"`
|
|
Platform string `json:"platform"`
|
|
ServerId string `json:"server_id"`
|
|
DeviceId string `json:"device_id"`
|
|
PostId string `json:"post_id"`
|
|
Category string `json:"category,omitempty"`
|
|
Sound string `json:"sound,omitempty"`
|
|
Message string `json:"message,omitempty"`
|
|
Badge int `json:"badge,omitempty"`
|
|
ContentAvailable int `json:"cont_ava,omitempty"`
|
|
TeamId string `json:"team_id,omitempty"`
|
|
ChannelId string `json:"channel_id,omitempty"`
|
|
RootId string `json:"root_id,omitempty"`
|
|
ChannelName string `json:"channel_name,omitempty"`
|
|
Type string `json:"type,omitempty"`
|
|
SenderId string `json:"sender_id,omitempty"`
|
|
SenderName string `json:"sender_name,omitempty"`
|
|
OverrideUsername string `json:"override_username,omitempty"`
|
|
OverrideIconUrl string `json:"override_icon_url,omitempty"`
|
|
FromWebhook string `json:"from_webhook,omitempty"`
|
|
Version string `json:"version,omitempty"`
|
|
IsIdLoaded bool `json:"is_id_loaded"`
|
|
}
|
|
|
|
func (pn *PushNotification) ToJson() string {
|
|
b, _ := json.Marshal(pn)
|
|
return string(b)
|
|
}
|
|
|
|
func (pn *PushNotification) DeepCopy() *PushNotification {
|
|
copy := *pn
|
|
return ©
|
|
}
|
|
|
|
func (pn *PushNotification) SetDeviceIdAndPlatform(deviceId string) {
|
|
|
|
index := strings.Index(deviceId, ":")
|
|
|
|
if index > -1 {
|
|
pn.Platform = deviceId[:index]
|
|
pn.DeviceId = deviceId[index+1:]
|
|
}
|
|
}
|
|
|
|
func PushNotificationFromJson(data io.Reader) (*PushNotification, error) {
|
|
if data == nil {
|
|
return nil, errors.New("push notification data can't be nil")
|
|
}
|
|
var pn *PushNotification
|
|
if err := json.NewDecoder(data).Decode(&pn); err != nil {
|
|
return nil, err
|
|
}
|
|
return pn, nil
|
|
}
|
|
|
|
func PushNotificationAckFromJson(data io.Reader) (*PushNotificationAck, error) {
|
|
if data == nil {
|
|
return nil, errors.New("push notification data can't be nil")
|
|
}
|
|
var ack *PushNotificationAck
|
|
if err := json.NewDecoder(data).Decode(&ack); err != nil {
|
|
return nil, err
|
|
}
|
|
return ack, nil
|
|
}
|
|
|
|
func (ack *PushNotificationAck) ToJson() string {
|
|
b, _ := json.Marshal(ack)
|
|
return string(b)
|
|
}
|