mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-31 08:29:33 +08:00 
			
		
		
		
	* fix: to start im or chat, ZooKeeper must be started first. * fix: msg gateway start output err info Signed-off-by: Gordon <1432970085@qq.com> * fix: msg gateway start output err info Signed-off-by: Gordon <1432970085@qq.com> * chore: package path changes Signed-off-by: withchao <993506633@qq.com> * fix: go mod update Signed-off-by: Gordon <1432970085@qq.com> * fix: token update Signed-off-by: Gordon <1432970085@qq.com> * chore: package path changes Signed-off-by: withchao <993506633@qq.com> * chore: package path changes Signed-off-by: withchao <993506633@qq.com> * fix: token update Signed-off-by: Gordon <1432970085@qq.com> * fix: token update Signed-off-by: Gordon <1432970085@qq.com> * fix: token update Signed-off-by: Gordon <1432970085@qq.com> * fix: token update Signed-off-by: Gordon <1432970085@qq.com> * fix: token update Signed-off-by: Gordon <1432970085@qq.com> --------- Signed-off-by: Gordon <1432970085@qq.com> Signed-off-by: withchao <993506633@qq.com> Co-authored-by: withchao <993506633@qq.com>
		
			
				
	
	
		
			186 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright © 2023 OpenIM. All rights reserved.
 | |
| //
 | |
| // Licensed under the Apache License, Version 2.0 (the "License");
 | |
| // you may not use this file except in compliance with the License.
 | |
| // You may obtain a copy of the License at
 | |
| //
 | |
| //     http://www.apache.org/licenses/LICENSE-2.0
 | |
| //
 | |
| // Unless required by applicable law or agreed to in writing, software
 | |
| // distributed under the License is distributed on an "AS IS" BASIS,
 | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| // See the License for the specific language governing permissions and
 | |
| // limitations under the License.
 | |
| 
 | |
| package getui
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
 | |
| )
 | |
| 
 | |
| type Resp struct {
 | |
| 	Code int         `json:"code"`
 | |
| 	Msg  string      `json:"msg"`
 | |
| 	Data interface{} `json:"data"`
 | |
| }
 | |
| 
 | |
| func (r *Resp) parseError() (err error) {
 | |
| 	switch r.Code {
 | |
| 	case tokenExpireCode:
 | |
| 		err = ErrTokenExpire
 | |
| 	case 0:
 | |
| 		err = nil
 | |
| 	default:
 | |
| 		err = fmt.Errorf("code %d, msg %s", r.Code, r.Msg)
 | |
| 	}
 | |
| 	return err
 | |
| }
 | |
| 
 | |
| type RespI interface {
 | |
| 	parseError() error
 | |
| }
 | |
| 
 | |
| type AuthReq struct {
 | |
| 	Sign      string `json:"sign"`
 | |
| 	Timestamp string `json:"timestamp"`
 | |
| 	AppKey    string `json:"appkey"`
 | |
| }
 | |
| 
 | |
| type AuthResp struct {
 | |
| 	ExpireTime string `json:"expire_time"`
 | |
| 	Token      string `json:"token"`
 | |
| }
 | |
| 
 | |
| type TaskResp struct {
 | |
| 	TaskID string `json:"taskID"`
 | |
| }
 | |
| 
 | |
| type Settings struct {
 | |
| 	TTL *int64 `json:"ttl"`
 | |
| }
 | |
| 
 | |
| type Audience struct {
 | |
| 	Alias []string `json:"alias"`
 | |
| }
 | |
| 
 | |
| type PushMessage struct {
 | |
| 	Notification *Notification `json:"notification,omitempty"`
 | |
| 	Transmission *string       `json:"transmission,omitempty"`
 | |
| }
 | |
| 
 | |
| type PushChannel struct {
 | |
| 	Ios     *Ios     `json:"ios"`
 | |
| 	Android *Android `json:"android"`
 | |
| }
 | |
| 
 | |
| type PushReq struct {
 | |
| 	RequestID   *string      `json:"request_id"`
 | |
| 	Settings    *Settings    `json:"settings"`
 | |
| 	Audience    *Audience    `json:"audience"`
 | |
| 	PushMessage *PushMessage `json:"push_message"`
 | |
| 	PushChannel *PushChannel `json:"push_channel"`
 | |
| 	IsAsync     *bool        `json:"is_async"`
 | |
| 	TaskID      *string      `json:"taskid"`
 | |
| }
 | |
| 
 | |
| type Ios struct {
 | |
| 	NotificationType *string `json:"type"`
 | |
| 	AutoBadge        *string `json:"auto_badge"`
 | |
| 	Aps              struct {
 | |
| 		Sound string `json:"sound"`
 | |
| 		Alert Alert  `json:"alert"`
 | |
| 	} `json:"aps"`
 | |
| }
 | |
| 
 | |
| type Alert struct {
 | |
| 	Title string `json:"title"`
 | |
| 	Body  string `json:"body"`
 | |
| }
 | |
| 
 | |
| type Android struct {
 | |
| 	Ups struct {
 | |
| 		Notification Notification `json:"notification"`
 | |
| 		Options      Options      `json:"options"`
 | |
| 	} `json:"ups"`
 | |
| }
 | |
| 
 | |
| type Notification struct {
 | |
| 	Title       string `json:"title"`
 | |
| 	Body        string `json:"body"`
 | |
| 	ChannelID   string `json:"channelID"`
 | |
| 	ChannelName string `json:"ChannelName"`
 | |
| 	ClickType   string `json:"click_type"`
 | |
| }
 | |
| 
 | |
| type Options struct {
 | |
| 	HW struct {
 | |
| 		DefaultSound bool   `json:"/message/android/notification/default_sound"`
 | |
| 		ChannelID    string `json:"/message/android/notification/channel_id"`
 | |
| 		Sound        string `json:"/message/android/notification/sound"`
 | |
| 		Importance   string `json:"/message/android/notification/importance"`
 | |
| 	} `json:"HW"`
 | |
| 	XM struct {
 | |
| 		ChannelID string `json:"/extra.channel_id"`
 | |
| 	} `json:"XM"`
 | |
| 	VV struct {
 | |
| 		Classification int `json:"/classification"`
 | |
| 	} `json:"VV"`
 | |
| }
 | |
| 
 | |
| type Payload struct {
 | |
| 	IsSignal bool `json:"isSignal"`
 | |
| }
 | |
| 
 | |
| func newPushReq(title, content string) PushReq {
 | |
| 	pushReq := PushReq{PushMessage: &PushMessage{Notification: &Notification{
 | |
| 		Title:       title,
 | |
| 		Body:        content,
 | |
| 		ClickType:   "startapp",
 | |
| 		ChannelID:   config.Config.Push.GeTui.ChannelID,
 | |
| 		ChannelName: config.Config.Push.GeTui.ChannelName,
 | |
| 	}}}
 | |
| 	return pushReq
 | |
| }
 | |
| 
 | |
| func newBatchPushReq(userIDs []string, taskID string) PushReq {
 | |
| 	IsAsync := true
 | |
| 	return PushReq{Audience: &Audience{Alias: userIDs}, IsAsync: &IsAsync, TaskID: &taskID}
 | |
| }
 | |
| 
 | |
| func (pushReq *PushReq) setPushChannel(title string, body string) {
 | |
| 	pushReq.PushChannel = &PushChannel{}
 | |
| 	// autoBadge := "+1"
 | |
| 	pushReq.PushChannel.Ios = &Ios{}
 | |
| 	notify := "notify"
 | |
| 	pushReq.PushChannel.Ios.NotificationType = ¬ify
 | |
| 	pushReq.PushChannel.Ios.Aps.Sound = "default"
 | |
| 	pushReq.PushChannel.Ios.Aps.Alert = Alert{
 | |
| 		Title: title,
 | |
| 		Body:  body,
 | |
| 	}
 | |
| 	pushReq.PushChannel.Android = &Android{}
 | |
| 	pushReq.PushChannel.Android.Ups.Notification = Notification{
 | |
| 		Title:     title,
 | |
| 		Body:      body,
 | |
| 		ClickType: "startapp",
 | |
| 	}
 | |
| 	pushReq.PushChannel.Android.Ups.Options = Options{
 | |
| 		HW: struct {
 | |
| 			DefaultSound bool   `json:"/message/android/notification/default_sound"`
 | |
| 			ChannelID    string `json:"/message/android/notification/channel_id"`
 | |
| 			Sound        string `json:"/message/android/notification/sound"`
 | |
| 			Importance   string `json:"/message/android/notification/importance"`
 | |
| 		}{ChannelID: "RingRing4", Sound: "/raw/ring001", Importance: "NORMAL"},
 | |
| 		XM: struct {
 | |
| 			ChannelID string `json:"/extra.channel_id"`
 | |
| 		}{ChannelID: "high_system"},
 | |
| 		VV: struct {
 | |
| 			Classification int "json:\"/classification\""
 | |
| 		}{
 | |
| 			Classification: 1,
 | |
| 		},
 | |
| 	}
 | |
| }
 |