Merge branch 'errcode' of github.com:OpenIMSDK/Open-IM-Server into errcode

test-errcode
wangchuxiao 2 years ago
commit 6c1525bd62

@ -92,33 +92,35 @@ sdk:
#对象存储服务以下配置二选一目前支持两种腾讯云和minio二者配置好其中一种即可如果使用minio参考https://doc.rentsoft.cn/#/qa/minio搭建minio服务器 #对象存储服务以下配置二选一目前支持两种腾讯云和minio二者配置好其中一种即可如果使用minio参考https://doc.rentsoft.cn/#/qa/minio搭建minio服务器
credential: #腾讯cos发送图片、视频、文件时需要请自行申请后替换必须修改 credential: #腾讯cos发送图片、视频、文件时需要请自行申请后替换必须修改
object:
enable: minio
apiURL: http://127.0.0.1:10002/api/third/object?name=
tencent: tencent:
appID: appID:
region: region:
bucket: bucket:
secretID: secretID:
secretKey: secretKey:
minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK中 object_storage参数为minio minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK中 object_storage参数为minio
bucket: openim # 存储内容桶 tempBucket: "openIM"
appBucket: app # 存储app的桶 dataBucket: "openIM"
location: us-east-1 location: us-east-1
endpoint: http://127.0.0.1:10005 #minio外网ip 这个ip是给客户端访问的 endpoint: http://127.0.0.1:10005 #minio外网ip 这个ip是给客户端访问的
endpointInner: http://127.0.0.1:10005 #minio内网地址 如果im server 可以通过内网访问到 minio就可以
endpointInnerEnable: true #是否启用minio内网地址 启用可以让桶初始化IM server连接minio走内网地址访问
accessKeyID: root accessKeyID: root
secretAccessKey: openIM123 secretAccessKey: openIM123
storageTime: 50 #文件在minio中保存的时间
isDistributedMod: false # 是否分布式多硬盘部署 默认docker-compose中为false isDistributedMod: false # 是否分布式多硬盘部署 默认docker-compose中为false
ali: # ali oss ali: # ali oss
regionID: regionID:
accessKeyID: accessKeyID:
accessKeySecret: accessKeySecret:
stsEndpoint: stsEndpoint:
ossEndpoint: ossEndpoint:
bucket: bucket:
finalHost: finalHost:
stsDurationSeconds: stsDurationSeconds:
OssRoleArn: OssRoleArn:
aws: aws:
accessKeyID: #AssumeRole用户关联的accessKeyID accessKeyID: #AssumeRole用户关联的accessKeyID
accessKeySecret: #AssumeRole用户关联的accessKeySecrect accessKeySecret: #AssumeRole用户关联的accessKeySecrect
@ -129,7 +131,6 @@ credential: #腾讯cos发送图片、视频、文件时需要请自行申
externalId: #角色扩展Id externalId: #角色扩展Id
roleSessionName: #角色SESSION名称 roleSessionName: #角色SESSION名称
rpcport: #rpc服务端口 默认即可 rpcport: #rpc服务端口 默认即可
openImUserPort: [ 10110 ] openImUserPort: [ 10110 ]
openImFriendPort: [ 10120 ] openImFriendPort: [ 10120 ]

@ -2,6 +2,7 @@ package a2r
import ( import (
"OpenIM/internal/apiresp" "OpenIM/internal/apiresp"
"OpenIM/pkg/common/log"
"OpenIM/pkg/errs" "OpenIM/pkg/errs"
"context" "context"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -15,11 +16,13 @@ func Call[A, B, C any](
) { ) {
var req A var req A
if err := c.BindJSON(&req); err != nil { if err := c.BindJSON(&req); err != nil {
log.ZWarn(c, "gin bind json error", err, req)
apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数错误 apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数错误
return return
} }
if check, ok := any(&req).(interface{ Check() error }); ok { if check, ok := any(&req).(interface{ Check() error }); ok {
if err := check.Check(); err != nil { if err := check.Check(); err != nil {
log.ZWarn(c, "custom check error", err, req)
apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数校验失败 apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数校验失败
return return
} }

@ -28,6 +28,7 @@ func (o *Conversation) client() (conversation.ConversationClient, error) {
} }
func (o *Conversation) GetAllConversations(c *gin.Context) { func (o *Conversation) GetAllConversations(c *gin.Context) {
return
a2r.Call(conversation.ConversationClient.GetAllConversations, o.client, c) a2r.Call(conversation.ConversationClient.GetAllConversations, o.client, c)
} }

@ -111,6 +111,9 @@ func NewGinRouter(zk discoveryregistry.SvcDiscoveryRegistry) *gin.Engine {
thirdGroup.POST("/apply_put", t.ApplyPut) thirdGroup.POST("/apply_put", t.ApplyPut)
thirdGroup.POST("/get_put", t.GetPut) thirdGroup.POST("/get_put", t.GetPut)
thirdGroup.POST("/confirm_put", t.ConfirmPut) thirdGroup.POST("/confirm_put", t.ConfirmPut)
thirdGroup.GET("/get_url", t.GetURL)
thirdGroup.GET("/object", t.GetURL)
} }
////Message ////Message
chatGroup := r.Group("/msg") chatGroup := r.Group("/msg")

@ -4,10 +4,11 @@ import (
"OpenIM/internal/api/a2r" "OpenIM/internal/api/a2r"
"OpenIM/pkg/common/config" "OpenIM/pkg/common/config"
"OpenIM/pkg/discoveryregistry" "OpenIM/pkg/discoveryregistry"
"OpenIM/pkg/errs"
"OpenIM/pkg/proto/third" "OpenIM/pkg/proto/third"
"context" "context"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"net/http"
) )
var _ context.Context // 解决goland编辑器bug var _ context.Context // 解决goland编辑器bug
@ -55,3 +56,34 @@ func (o *Third) FcmUpdateToken(c *gin.Context) {
func (o *Third) SetAppBadge(c *gin.Context) { func (o *Third) SetAppBadge(c *gin.Context) {
a2r.Call(third.ThirdClient.SetAppBadge, o.client, c) a2r.Call(third.ThirdClient.SetAppBadge, o.client, c)
} }
func (o *Third) GetURL(c *gin.Context) {
if c.Request.Method == http.MethodPost {
a2r.Call(third.ThirdClient.GetUrl, o.client, c)
return
}
name := c.Query("name")
if name == "" {
c.String(http.StatusBadRequest, "name is empty")
return
}
client, err := o.client()
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}
resp, err := client.GetUrl(c, &third.GetUrlReq{Name: name})
if err != nil {
if errs.ErrArgs.Is(err) {
c.String(http.StatusBadRequest, err.Error())
return
}
if errs.ErrRecordNotFound.Is(err) {
c.String(http.StatusNotFound, err.Error())
return
}
c.String(http.StatusInternalServerError, err.Error())
return
}
c.Redirect(http.StatusTemporaryRedirect, resp.Url)
}

@ -53,8 +53,7 @@ func (ws *WsServer) UnRegister(c *Client) {
} }
func (ws *WsServer) Validate(s interface{}) error { func (ws *WsServer) Validate(s interface{}) error {
//TODO implement me return nil
panic("implement me")
} }
func (ws *WsServer) GetUserAllCons(userID string) ([]*Client, bool) { func (ws *WsServer) GetUserAllCons(userID string) ([]*Client, bool) {

@ -7,11 +7,7 @@
package push package push
import ( import (
"OpenIM/pkg/common/config"
"OpenIM/pkg/common/constant"
"OpenIM/pkg/common/prome" "OpenIM/pkg/common/prome"
"OpenIM/pkg/statistics"
"fmt"
) )
type Consumer struct { type Consumer struct {
@ -31,6 +27,6 @@ func (c *Consumer) initPrometheus() {
} }
func (c *Consumer) Start() { func (c *Consumer) Start() {
statistics.NewStatistics(&c.successCount, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) //statistics.NewStatistics(&c.successCount, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval)
go c.pushCh.pushConsumerGroup.RegisterHandleAndConsumer(&c.pushCh) go c.pushCh.pushConsumerGroup.RegisterHandleAndConsumer(&c.pushCh)
} }

@ -1,6 +1,7 @@
package third package third
import ( import (
"OpenIM/pkg/common/tokenverify"
"OpenIM/pkg/proto/third" "OpenIM/pkg/proto/third"
"context" "context"
"time" "time"
@ -18,6 +19,15 @@ func (t *thirdServer) ConfirmPut(ctx context.Context, req *third.ConfirmPutReq)
return t.s3dataBase.ConfirmPut(ctx, req) return t.s3dataBase.ConfirmPut(ctx, req)
} }
func (t *thirdServer) GetUrl(ctx context.Context, req *third.GetUrlReq) (*third.GetUrlResp, error) {
if req.Expires <= 0 {
if err := tokenverify.CheckAdmin(ctx); err != nil {
return nil, err
}
}
return t.s3dataBase.GetUrl(ctx, req)
}
func (t *thirdServer) CleanObject(ctx context.Context, now time.Time) { func (t *thirdServer) CleanObject(ctx context.Context, now time.Time) {
t.s3dataBase.CleanExpirationObject(ctx, now) t.s3dataBase.CleanExpirationObject(ctx, now)
} }

@ -68,6 +68,11 @@ type config struct {
DataDir []string `yaml:"dataDir"` DataDir []string `yaml:"dataDir"`
} }
Credential struct { Credential struct {
}
Object struct {
Enable string `yaml:"enable"`
ApiURL string `yaml:"apiURL"`
Tencent struct { Tencent struct {
AppID string `yaml:"appID"` AppID string `yaml:"appID"`
Region string `yaml:"region"` Region string `yaml:"region"`
@ -87,16 +92,13 @@ type config struct {
OssRoleArn string `yaml:"OssRoleArn"` OssRoleArn string `yaml:"OssRoleArn"`
} }
Minio struct { Minio struct {
Bucket string `yaml:"bucket"` TempBucket string `yaml:"tempBucket"`
AppBucket string `yaml:"appBucket"` DataBucket string `yaml:"dataBucket"`
Location string `yaml:"location"` Location string `yaml:"location"`
Endpoint string `yaml:"endpoint"` Endpoint string `yaml:"endpoint"`
AccessKeyID string `yaml:"accessKeyID"` AccessKeyID string `yaml:"accessKeyID"`
SecretAccessKey string `yaml:"secretAccessKey"` SecretAccessKey string `yaml:"secretAccessKey"`
EndpointInner string `yaml:"endpointInner"` IsDistributedMod bool `yaml:"isDistributedMod"`
EndpointInnerEnable bool `yaml:"endpointInnerEnable"`
StorageTime int `yaml:"storageTime"`
IsDistributedMod bool `yaml:"isDistributedMod"`
} `yaml:"minio"` } `yaml:"minio"`
Aws struct { Aws struct {
AccessKeyID string `yaml:"accessKeyID"` AccessKeyID string `yaml:"accessKeyID"`

@ -2,9 +2,11 @@ package controller
import "C" import "C"
import ( import (
"OpenIM/pkg/common/config"
"OpenIM/pkg/common/db/obj" "OpenIM/pkg/common/db/obj"
"OpenIM/pkg/common/db/table/relation" "OpenIM/pkg/common/db/table/relation"
"OpenIM/pkg/common/log" "OpenIM/pkg/common/log"
"OpenIM/pkg/errs"
"OpenIM/pkg/proto/third" "OpenIM/pkg/proto/third"
"OpenIM/pkg/utils" "OpenIM/pkg/utils"
"context" "context"
@ -18,10 +20,17 @@ import (
"time" "time"
) )
const (
hashPrefix = "hash"
tempPrefix = "temp"
fragmentPrefix = "fragment_"
)
type S3Database interface { type S3Database interface {
ApplyPut(ctx context.Context, req *third.ApplyPutReq) (*third.ApplyPutResp, error) ApplyPut(ctx context.Context, req *third.ApplyPutReq) (*third.ApplyPutResp, error)
GetPut(ctx context.Context, req *third.GetPutReq) (*third.GetPutResp, error) GetPut(ctx context.Context, req *third.GetPutReq) (*third.GetPutResp, error)
ConfirmPut(ctx context.Context, req *third.ConfirmPutReq) (*third.ConfirmPutResp, error) ConfirmPut(ctx context.Context, req *third.ConfirmPutReq) (*third.ConfirmPutResp, error)
GetUrl(ctx context.Context, req *third.GetUrlReq) (*third.GetUrlResp, error)
CleanExpirationObject(ctx context.Context, t time.Time) CleanExpirationObject(ctx context.Context, t time.Time)
} }
@ -48,7 +57,7 @@ func (c *s3Database) today() string {
// fragmentName 根据序号生成文件名 // fragmentName 根据序号生成文件名
func (c *s3Database) fragmentName(index int) string { func (c *s3Database) fragmentName(index int) string {
return "fragment_" + strconv.Itoa(index+1) return fragmentPrefix + strconv.Itoa(index+1)
} }
// getFragmentNum 获取分片大小和分片数量 // getFragmentNum 获取分片大小和分片数量
@ -76,16 +85,13 @@ func (c *s3Database) CheckHash(hash string) error {
return err return err
} }
if len(val) != md5.Size { if len(val) != md5.Size {
return errors.New("hash value error") return errs.ErrArgs.Wrap("invalid hash")
} }
return nil return nil
} }
func (c *s3Database) urlName(name string) string { func (c *s3Database) urlName(name string) string {
if name[0] != '/' { return config.Config.Object.ApiURL + name
name = "/" + name
}
return "http://127.0.0.1:8080" + name
} }
func (c *s3Database) UUID() string { func (c *s3Database) UUID() string {
@ -93,7 +99,7 @@ func (c *s3Database) UUID() string {
} }
func (c *s3Database) HashName(hash string) string { func (c *s3Database) HashName(hash string) string {
return path.Join("hash", c.today(), c.UUID()) return path.Join(hashPrefix, hash+"_"+c.today()+"_"+c.UUID())
} }
func (c *s3Database) isNotFound(err error) bool { func (c *s3Database) isNotFound(err error) bool {
@ -141,7 +147,7 @@ func (c *s3Database) ApplyPut(ctx context.Context, req *third.ApplyPutReq) (*thi
ExpirationTime: expirationTime, ExpirationTime: expirationTime,
EffectiveTime: time.Now().Add(effective), EffectiveTime: time.Now().Add(effective),
} }
put.Path = path.Join("upload", c.today(), req.Hash, put.PutID) put.Path = path.Join(tempPrefix, c.today(), req.Hash, put.PutID)
putURLs := make([]string, 0, pack) putURLs := make([]string, 0, pack)
for i := 0; i < pack; i++ { for i := 0; i < pack; i++ {
url, err := c.obj.PresignedPutURL(ctx, &obj.ApplyPutArgs{ url, err := c.obj.PresignedPutURL(ctx, &obj.ApplyPutArgs{
@ -356,6 +362,29 @@ func (c *s3Database) ConfirmPut(ctx context.Context, req *third.ConfirmPutReq) (
}, nil }, nil
} }
func (c *s3Database) GetUrl(ctx context.Context, req *third.GetUrlReq) (*third.GetUrlResp, error) {
info, err := c.info.Take(ctx, req.Name)
if err != nil {
return nil, err
}
if info.ExpirationTime != nil && info.ExpirationTime.Before(time.Now()) {
return nil, errs.ErrRecordNotFound.Wrap("object expired")
}
hash, err := c.hash.Take(ctx, info.Hash, c.obj.Name())
if err != nil {
return nil, err
}
u, err := c.obj.GetURL(ctx, hash.Bucket, hash.Name, time.Duration(req.Expires)*time.Millisecond)
if err != nil {
return nil, err
}
return &third.GetUrlResp{
Url: u,
Size: hash.Size,
Hash: hash.Hash,
}, nil
}
func (c *s3Database) CleanExpirationObject(ctx context.Context, t time.Time) { func (c *s3Database) CleanExpirationObject(ctx context.Context, t time.Time) {
// 清理上传产生的临时文件 // 清理上传产生的临时文件
c.cleanPutTemp(ctx, t, 10) c.cleanPutTemp(ctx, t, 10)

@ -1,51 +1,65 @@
package obj package obj
import ( import (
"OpenIM/pkg/common/config"
"OpenIM/pkg/utils"
"context" "context"
"errors" "errors"
"fmt" "fmt"
"github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"github.com/minio/minio-go/v7/pkg/s3utils" "github.com/minio/minio-go/v7/pkg/s3utils"
"net/http" "net/url"
"time" "time"
) )
func NewMinioClient() {
}
func NewMinioInterface() (Interface, error) { func NewMinioInterface() (Interface, error) {
//client, err := minio.New("127.0.0.1:9000", &minio.Options{ conf := config.Config.Object.Minio
// Creds: credentials.NewStaticV4("minioadmin", "minioadmin", ""), u, err := url.Parse(conf.Endpoint)
// Secure: false, if err != nil {
//}) return nil, fmt.Errorf("minio endpoint parse %w", err)
// todo 初始化连接和桶 }
return &minioImpl{}, nil if u.Scheme != "http" && u.Scheme != "https" {
return nil, fmt.Errorf("invalid minio endpoint scheme %s", u.Scheme)
}
client, err := minio.New(u.Host, &minio.Options{
Creds: credentials.NewStaticV4(conf.AccessKeyID, conf.SecretAccessKey, ""),
Secure: u.Scheme == "https",
})
if err != nil {
return nil, fmt.Errorf("minio new client %w", err)
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second*20)
defer cancel()
for _, bucket := range utils.Distinct([]string{conf.TempBucket, conf.DataBucket}) {
exists, err := client.BucketExists(ctx, bucket)
if err != nil {
return nil, fmt.Errorf("minio bucket %s exists %w", bucket, err)
}
if exists {
continue
}
opt := minio.MakeBucketOptions{
Region: conf.Location,
ObjectLocking: conf.IsDistributedMod,
}
if err := client.MakeBucket(ctx, conf.TempBucket, opt); err != nil {
return nil, fmt.Errorf("minio make bucket %s %w", bucket, err)
}
}
return &minioImpl{
client: client,
tempBucket: conf.TempBucket,
dataBucket: conf.DataBucket,
}, nil
} }
type minioImpl struct { type minioImpl struct {
tempBucket string // 上传桶 tempBucket string // 上传桶
permanentBucket string // 永久桶 dataBucket string // 永久桶
clearBucket string // 自动清理桶 urlstr string // 访问地址
urlstr string // 访问地址 client *minio.Client
client *minio.Client }
}
//func (m *minioImpl) Init() error {
// client, err := minio.New("127.0.0.1:9000", &minio.Options{
// Creds: credentials.NewStaticV4("minioadmin", "minioadmin", ""),
// Secure: false,
// })
// if err != nil {
// return fmt.Errorf("minio client error: %w", err)
// }
// m.urlstr = "http://127.0.0.1:9000"
// m.client = client
// m.tempBucket = "temp"
// m.permanentBucket = "permanent"
// m.clearBucket = "clear"
// return nil
//}
func (m *minioImpl) Name() string { func (m *minioImpl) Name() string {
return "minio" return "minio"
@ -63,26 +77,20 @@ func (m *minioImpl) MinExpirationTime() time.Duration {
return time.Hour * 24 return time.Hour * 24
} }
func (m *minioImpl) AppendHeader() http.Header {
return map[string][]string{
"x-amz-object-append": {"true"},
}
}
func (m *minioImpl) TempBucket() string { func (m *minioImpl) TempBucket() string {
return m.tempBucket return m.tempBucket
} }
func (m *minioImpl) DataBucket() string { func (m *minioImpl) DataBucket() string {
return m.permanentBucket return m.dataBucket
} }
func (m *minioImpl) ClearBucket() string { func (m *minioImpl) GetURL(ctx context.Context, bucket string, name string, expires time.Duration) (string, error) {
return m.clearBucket u, err := m.client.PresignedGetObject(ctx, bucket, name, expires, nil)
} if err != nil {
return "", err
func (m *minioImpl) GetURL(bucket string, name string) string { }
return fmt.Sprintf("%s/%s/%s", m.urlstr, bucket, name) return u.String(), nil
} }
func (m *minioImpl) PresignedPutURL(ctx context.Context, args *ApplyPutArgs) (string, error) { func (m *minioImpl) PresignedPutURL(ctx context.Context, args *ApplyPutArgs) (string, error) {
@ -111,7 +119,6 @@ func (m *minioImpl) GetObjectInfo(ctx context.Context, args *BucketObject) (*Obj
return nil, err return nil, err
} }
return &ObjectInfo{ return &ObjectInfo{
URL: m.GetURL(args.Bucket, args.Name),
Size: info.Size, Size: info.Size,
Hash: info.ETag, Hash: info.ETag,
}, nil }, nil

@ -20,10 +20,8 @@ type ApplyPutArgs struct {
} }
type ObjectInfo struct { type ObjectInfo struct {
URL string Size int64
Size int64 Hash string
Hash string
Expiration time.Time
} }
type Interface interface { type Interface interface {
@ -40,7 +38,8 @@ type Interface interface {
// DataBucket 永久存储的桶名 // DataBucket 永久存储的桶名
DataBucket() string DataBucket() string
// GetURL 通过桶名和对象名返回URL // GetURL 通过桶名和对象名返回URL
GetURL(bucket string, name string) string //GetURL(bucket string, name string) string
GetURL(ctx context.Context, bucket string, name string, expires time.Duration) (string, error)
// PresignedPutURL 申请上传,返回PUT的上传地址 // PresignedPutURL 申请上传,返回PUT的上传地址
PresignedPutURL(ctx context.Context, args *ApplyPutArgs) (string, error) PresignedPutURL(ctx context.Context, args *ApplyPutArgs) (string, error)
// GetObjectInfo 获取对象信息 // GetObjectInfo 获取对象信息

@ -2,6 +2,7 @@ package relation
import ( import (
"OpenIM/pkg/common/db/table/relation" "OpenIM/pkg/common/db/table/relation"
"OpenIM/pkg/common/log"
"OpenIM/pkg/utils" "OpenIM/pkg/utils"
"context" "context"
"gorm.io/gorm" "gorm.io/gorm"
@ -32,7 +33,8 @@ func (u *UserGorm) Update(ctx context.Context, users []*relation.UserModel) (err
// 获取指定用户信息 不存在,也不返回错误 // 获取指定用户信息 不存在,也不返回错误
func (u *UserGorm) Find(ctx context.Context, userIDs []string) (users []*relation.UserModel, err error) { func (u *UserGorm) Find(ctx context.Context, userIDs []string) (users []*relation.UserModel, err error) {
err = utils.Wrap(u.DB.Debug().Where("user_id in ?", userIDs).Find(&users).Error, "") log.ZDebug(ctx, "Find args", "userIDs", userIDs)
err = utils.Wrap(u.DB.Where("user_id in ?", userIDs).Find(&users).Error, "")
return users, err return users, err
} }

@ -9,6 +9,7 @@ import (
type CodeError interface { type CodeError interface {
Code() int Code() int
Msg() string Msg() string
Is(err error) bool
Wrap(msg ...string) error Wrap(msg ...string) error
error error
} }
@ -38,6 +39,17 @@ func (e *codeError) Wrap(w ...string) error {
return errors.Wrap(e, strings.Join(w, ", ")) return errors.Wrap(e, strings.Join(w, ", "))
} }
func (e *codeError) Is(err error) bool {
if err == nil {
return false
}
codeErr, ok := Unwrap(err).(CodeError)
if ok {
return codeErr.Code() == e.code
}
return false
}
func (e *codeError) Error() string { func (e *codeError) Error() string {
return fmt.Sprintf("[%d]%s", e.code, e.msg) return fmt.Sprintf("[%d]%s", e.code, e.msg)
} }

@ -39,7 +39,7 @@ func (m *ApplyPutReq) Reset() { *m = ApplyPutReq{} }
func (m *ApplyPutReq) String() string { return proto.CompactTextString(m) } func (m *ApplyPutReq) String() string { return proto.CompactTextString(m) }
func (*ApplyPutReq) ProtoMessage() {} func (*ApplyPutReq) ProtoMessage() {}
func (*ApplyPutReq) Descriptor() ([]byte, []int) { func (*ApplyPutReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{0} return fileDescriptor_third_aac767b0c26bb83e, []int{0}
} }
func (m *ApplyPutReq) XXX_Unmarshal(b []byte) error { func (m *ApplyPutReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ApplyPutReq.Unmarshal(m, b) return xxx_messageInfo_ApplyPutReq.Unmarshal(m, b)
@ -109,7 +109,7 @@ func (m *ApplyPutResp) Reset() { *m = ApplyPutResp{} }
func (m *ApplyPutResp) String() string { return proto.CompactTextString(m) } func (m *ApplyPutResp) String() string { return proto.CompactTextString(m) }
func (*ApplyPutResp) ProtoMessage() {} func (*ApplyPutResp) ProtoMessage() {}
func (*ApplyPutResp) Descriptor() ([]byte, []int) { func (*ApplyPutResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{1} return fileDescriptor_third_aac767b0c26bb83e, []int{1}
} }
func (m *ApplyPutResp) XXX_Unmarshal(b []byte) error { func (m *ApplyPutResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ApplyPutResp.Unmarshal(m, b) return xxx_messageInfo_ApplyPutResp.Unmarshal(m, b)
@ -168,7 +168,7 @@ func (m *ConfirmPutReq) Reset() { *m = ConfirmPutReq{} }
func (m *ConfirmPutReq) String() string { return proto.CompactTextString(m) } func (m *ConfirmPutReq) String() string { return proto.CompactTextString(m) }
func (*ConfirmPutReq) ProtoMessage() {} func (*ConfirmPutReq) ProtoMessage() {}
func (*ConfirmPutReq) Descriptor() ([]byte, []int) { func (*ConfirmPutReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{2} return fileDescriptor_third_aac767b0c26bb83e, []int{2}
} }
func (m *ConfirmPutReq) XXX_Unmarshal(b []byte) error { func (m *ConfirmPutReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfirmPutReq.Unmarshal(m, b) return xxx_messageInfo_ConfirmPutReq.Unmarshal(m, b)
@ -206,7 +206,7 @@ func (m *ConfirmPutResp) Reset() { *m = ConfirmPutResp{} }
func (m *ConfirmPutResp) String() string { return proto.CompactTextString(m) } func (m *ConfirmPutResp) String() string { return proto.CompactTextString(m) }
func (*ConfirmPutResp) ProtoMessage() {} func (*ConfirmPutResp) ProtoMessage() {}
func (*ConfirmPutResp) Descriptor() ([]byte, []int) { func (*ConfirmPutResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{3} return fileDescriptor_third_aac767b0c26bb83e, []int{3}
} }
func (m *ConfirmPutResp) XXX_Unmarshal(b []byte) error { func (m *ConfirmPutResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfirmPutResp.Unmarshal(m, b) return xxx_messageInfo_ConfirmPutResp.Unmarshal(m, b)
@ -233,6 +233,106 @@ func (m *ConfirmPutResp) GetUrl() string {
return "" return ""
} }
type GetUrlReq struct {
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
Expires int64 `protobuf:"varint,2,opt,name=expires" json:"expires,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUrlReq) Reset() { *m = GetUrlReq{} }
func (m *GetUrlReq) String() string { return proto.CompactTextString(m) }
func (*GetUrlReq) ProtoMessage() {}
func (*GetUrlReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_aac767b0c26bb83e, []int{4}
}
func (m *GetUrlReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUrlReq.Unmarshal(m, b)
}
func (m *GetUrlReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUrlReq.Marshal(b, m, deterministic)
}
func (dst *GetUrlReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUrlReq.Merge(dst, src)
}
func (m *GetUrlReq) XXX_Size() int {
return xxx_messageInfo_GetUrlReq.Size(m)
}
func (m *GetUrlReq) XXX_DiscardUnknown() {
xxx_messageInfo_GetUrlReq.DiscardUnknown(m)
}
var xxx_messageInfo_GetUrlReq proto.InternalMessageInfo
func (m *GetUrlReq) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *GetUrlReq) GetExpires() int64 {
if m != nil {
return m.Expires
}
return 0
}
type GetUrlResp struct {
Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
Size int64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
Hash string `protobuf:"bytes,3,opt,name=hash" json:"hash,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUrlResp) Reset() { *m = GetUrlResp{} }
func (m *GetUrlResp) String() string { return proto.CompactTextString(m) }
func (*GetUrlResp) ProtoMessage() {}
func (*GetUrlResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_aac767b0c26bb83e, []int{5}
}
func (m *GetUrlResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUrlResp.Unmarshal(m, b)
}
func (m *GetUrlResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUrlResp.Marshal(b, m, deterministic)
}
func (dst *GetUrlResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUrlResp.Merge(dst, src)
}
func (m *GetUrlResp) XXX_Size() int {
return xxx_messageInfo_GetUrlResp.Size(m)
}
func (m *GetUrlResp) XXX_DiscardUnknown() {
xxx_messageInfo_GetUrlResp.DiscardUnknown(m)
}
var xxx_messageInfo_GetUrlResp proto.InternalMessageInfo
func (m *GetUrlResp) GetUrl() string {
if m != nil {
return m.Url
}
return ""
}
func (m *GetUrlResp) GetSize() int64 {
if m != nil {
return m.Size
}
return 0
}
func (m *GetUrlResp) GetHash() string {
if m != nil {
return m.Hash
}
return ""
}
type GetPutReq struct { type GetPutReq struct {
PutID string `protobuf:"bytes,1,opt,name=putID" json:"putID,omitempty"` PutID string `protobuf:"bytes,1,opt,name=putID" json:"putID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -244,7 +344,7 @@ func (m *GetPutReq) Reset() { *m = GetPutReq{} }
func (m *GetPutReq) String() string { return proto.CompactTextString(m) } func (m *GetPutReq) String() string { return proto.CompactTextString(m) }
func (*GetPutReq) ProtoMessage() {} func (*GetPutReq) ProtoMessage() {}
func (*GetPutReq) Descriptor() ([]byte, []int) { func (*GetPutReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{4} return fileDescriptor_third_aac767b0c26bb83e, []int{6}
} }
func (m *GetPutReq) XXX_Unmarshal(b []byte) error { func (m *GetPutReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPutReq.Unmarshal(m, b) return xxx_messageInfo_GetPutReq.Unmarshal(m, b)
@ -283,7 +383,7 @@ func (m *GetPutFragment) Reset() { *m = GetPutFragment{} }
func (m *GetPutFragment) String() string { return proto.CompactTextString(m) } func (m *GetPutFragment) String() string { return proto.CompactTextString(m) }
func (*GetPutFragment) ProtoMessage() {} func (*GetPutFragment) ProtoMessage() {}
func (*GetPutFragment) Descriptor() ([]byte, []int) { func (*GetPutFragment) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{5} return fileDescriptor_third_aac767b0c26bb83e, []int{7}
} }
func (m *GetPutFragment) XXX_Unmarshal(b []byte) error { func (m *GetPutFragment) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPutFragment.Unmarshal(m, b) return xxx_messageInfo_GetPutFragment.Unmarshal(m, b)
@ -333,7 +433,7 @@ func (m *GetPutResp) Reset() { *m = GetPutResp{} }
func (m *GetPutResp) String() string { return proto.CompactTextString(m) } func (m *GetPutResp) String() string { return proto.CompactTextString(m) }
func (*GetPutResp) ProtoMessage() {} func (*GetPutResp) ProtoMessage() {}
func (*GetPutResp) Descriptor() ([]byte, []int) { func (*GetPutResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{6} return fileDescriptor_third_aac767b0c26bb83e, []int{8}
} }
func (m *GetPutResp) XXX_Unmarshal(b []byte) error { func (m *GetPutResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPutResp.Unmarshal(m, b) return xxx_messageInfo_GetPutResp.Unmarshal(m, b)
@ -406,7 +506,7 @@ func (m *GetSignalInvitationInfoReq) Reset() { *m = GetSignalInvitationI
func (m *GetSignalInvitationInfoReq) String() string { return proto.CompactTextString(m) } func (m *GetSignalInvitationInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetSignalInvitationInfoReq) ProtoMessage() {} func (*GetSignalInvitationInfoReq) ProtoMessage() {}
func (*GetSignalInvitationInfoReq) Descriptor() ([]byte, []int) { func (*GetSignalInvitationInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{7} return fileDescriptor_third_aac767b0c26bb83e, []int{9}
} }
func (m *GetSignalInvitationInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetSignalInvitationInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSignalInvitationInfoReq.Unmarshal(m, b) return xxx_messageInfo_GetSignalInvitationInfoReq.Unmarshal(m, b)
@ -445,7 +545,7 @@ func (m *GetSignalInvitationInfoResp) Reset() { *m = GetSignalInvitation
func (m *GetSignalInvitationInfoResp) String() string { return proto.CompactTextString(m) } func (m *GetSignalInvitationInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetSignalInvitationInfoResp) ProtoMessage() {} func (*GetSignalInvitationInfoResp) ProtoMessage() {}
func (*GetSignalInvitationInfoResp) Descriptor() ([]byte, []int) { func (*GetSignalInvitationInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{8} return fileDescriptor_third_aac767b0c26bb83e, []int{10}
} }
func (m *GetSignalInvitationInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetSignalInvitationInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSignalInvitationInfoResp.Unmarshal(m, b) return xxx_messageInfo_GetSignalInvitationInfoResp.Unmarshal(m, b)
@ -490,7 +590,7 @@ func (m *GetSignalInvitationInfoStartAppReq) Reset() { *m = GetSignalInv
func (m *GetSignalInvitationInfoStartAppReq) String() string { return proto.CompactTextString(m) } func (m *GetSignalInvitationInfoStartAppReq) String() string { return proto.CompactTextString(m) }
func (*GetSignalInvitationInfoStartAppReq) ProtoMessage() {} func (*GetSignalInvitationInfoStartAppReq) ProtoMessage() {}
func (*GetSignalInvitationInfoStartAppReq) Descriptor() ([]byte, []int) { func (*GetSignalInvitationInfoStartAppReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{9} return fileDescriptor_third_aac767b0c26bb83e, []int{11}
} }
func (m *GetSignalInvitationInfoStartAppReq) XXX_Unmarshal(b []byte) error { func (m *GetSignalInvitationInfoStartAppReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSignalInvitationInfoStartAppReq.Unmarshal(m, b) return xxx_messageInfo_GetSignalInvitationInfoStartAppReq.Unmarshal(m, b)
@ -529,7 +629,7 @@ func (m *GetSignalInvitationInfoStartAppResp) Reset() { *m = GetSignalIn
func (m *GetSignalInvitationInfoStartAppResp) String() string { return proto.CompactTextString(m) } func (m *GetSignalInvitationInfoStartAppResp) String() string { return proto.CompactTextString(m) }
func (*GetSignalInvitationInfoStartAppResp) ProtoMessage() {} func (*GetSignalInvitationInfoStartAppResp) ProtoMessage() {}
func (*GetSignalInvitationInfoStartAppResp) Descriptor() ([]byte, []int) { func (*GetSignalInvitationInfoStartAppResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{10} return fileDescriptor_third_aac767b0c26bb83e, []int{12}
} }
func (m *GetSignalInvitationInfoStartAppResp) XXX_Unmarshal(b []byte) error { func (m *GetSignalInvitationInfoStartAppResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSignalInvitationInfoStartAppResp.Unmarshal(m, b) return xxx_messageInfo_GetSignalInvitationInfoStartAppResp.Unmarshal(m, b)
@ -577,7 +677,7 @@ func (m *FcmUpdateTokenReq) Reset() { *m = FcmUpdateTokenReq{} }
func (m *FcmUpdateTokenReq) String() string { return proto.CompactTextString(m) } func (m *FcmUpdateTokenReq) String() string { return proto.CompactTextString(m) }
func (*FcmUpdateTokenReq) ProtoMessage() {} func (*FcmUpdateTokenReq) ProtoMessage() {}
func (*FcmUpdateTokenReq) Descriptor() ([]byte, []int) { func (*FcmUpdateTokenReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{11} return fileDescriptor_third_aac767b0c26bb83e, []int{13}
} }
func (m *FcmUpdateTokenReq) XXX_Unmarshal(b []byte) error { func (m *FcmUpdateTokenReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FcmUpdateTokenReq.Unmarshal(m, b) return xxx_messageInfo_FcmUpdateTokenReq.Unmarshal(m, b)
@ -635,7 +735,7 @@ func (m *FcmUpdateTokenResp) Reset() { *m = FcmUpdateTokenResp{} }
func (m *FcmUpdateTokenResp) String() string { return proto.CompactTextString(m) } func (m *FcmUpdateTokenResp) String() string { return proto.CompactTextString(m) }
func (*FcmUpdateTokenResp) ProtoMessage() {} func (*FcmUpdateTokenResp) ProtoMessage() {}
func (*FcmUpdateTokenResp) Descriptor() ([]byte, []int) { func (*FcmUpdateTokenResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{12} return fileDescriptor_third_aac767b0c26bb83e, []int{14}
} }
func (m *FcmUpdateTokenResp) XXX_Unmarshal(b []byte) error { func (m *FcmUpdateTokenResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FcmUpdateTokenResp.Unmarshal(m, b) return xxx_messageInfo_FcmUpdateTokenResp.Unmarshal(m, b)
@ -667,7 +767,7 @@ func (m *SetAppBadgeReq) Reset() { *m = SetAppBadgeReq{} }
func (m *SetAppBadgeReq) String() string { return proto.CompactTextString(m) } func (m *SetAppBadgeReq) String() string { return proto.CompactTextString(m) }
func (*SetAppBadgeReq) ProtoMessage() {} func (*SetAppBadgeReq) ProtoMessage() {}
func (*SetAppBadgeReq) Descriptor() ([]byte, []int) { func (*SetAppBadgeReq) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{13} return fileDescriptor_third_aac767b0c26bb83e, []int{15}
} }
func (m *SetAppBadgeReq) XXX_Unmarshal(b []byte) error { func (m *SetAppBadgeReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetAppBadgeReq.Unmarshal(m, b) return xxx_messageInfo_SetAppBadgeReq.Unmarshal(m, b)
@ -711,7 +811,7 @@ func (m *SetAppBadgeResp) Reset() { *m = SetAppBadgeResp{} }
func (m *SetAppBadgeResp) String() string { return proto.CompactTextString(m) } func (m *SetAppBadgeResp) String() string { return proto.CompactTextString(m) }
func (*SetAppBadgeResp) ProtoMessage() {} func (*SetAppBadgeResp) ProtoMessage() {}
func (*SetAppBadgeResp) Descriptor() ([]byte, []int) { func (*SetAppBadgeResp) Descriptor() ([]byte, []int) {
return fileDescriptor_third_ed6a664e4920a6b2, []int{14} return fileDescriptor_third_aac767b0c26bb83e, []int{16}
} }
func (m *SetAppBadgeResp) XXX_Unmarshal(b []byte) error { func (m *SetAppBadgeResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetAppBadgeResp.Unmarshal(m, b) return xxx_messageInfo_SetAppBadgeResp.Unmarshal(m, b)
@ -736,6 +836,8 @@ func init() {
proto.RegisterType((*ApplyPutResp)(nil), "OpenIMServer.third.ApplyPutResp") proto.RegisterType((*ApplyPutResp)(nil), "OpenIMServer.third.ApplyPutResp")
proto.RegisterType((*ConfirmPutReq)(nil), "OpenIMServer.third.ConfirmPutReq") proto.RegisterType((*ConfirmPutReq)(nil), "OpenIMServer.third.ConfirmPutReq")
proto.RegisterType((*ConfirmPutResp)(nil), "OpenIMServer.third.ConfirmPutResp") proto.RegisterType((*ConfirmPutResp)(nil), "OpenIMServer.third.ConfirmPutResp")
proto.RegisterType((*GetUrlReq)(nil), "OpenIMServer.third.GetUrlReq")
proto.RegisterType((*GetUrlResp)(nil), "OpenIMServer.third.GetUrlResp")
proto.RegisterType((*GetPutReq)(nil), "OpenIMServer.third.GetPutReq") proto.RegisterType((*GetPutReq)(nil), "OpenIMServer.third.GetPutReq")
proto.RegisterType((*GetPutFragment)(nil), "OpenIMServer.third.GetPutFragment") proto.RegisterType((*GetPutFragment)(nil), "OpenIMServer.third.GetPutFragment")
proto.RegisterType((*GetPutResp)(nil), "OpenIMServer.third.GetPutResp") proto.RegisterType((*GetPutResp)(nil), "OpenIMServer.third.GetPutResp")
@ -763,6 +865,7 @@ type ThirdClient interface {
ApplyPut(ctx context.Context, in *ApplyPutReq, opts ...grpc.CallOption) (*ApplyPutResp, error) ApplyPut(ctx context.Context, in *ApplyPutReq, opts ...grpc.CallOption) (*ApplyPutResp, error)
GetPut(ctx context.Context, in *GetPutReq, opts ...grpc.CallOption) (*GetPutResp, error) GetPut(ctx context.Context, in *GetPutReq, opts ...grpc.CallOption) (*GetPutResp, error)
ConfirmPut(ctx context.Context, in *ConfirmPutReq, opts ...grpc.CallOption) (*ConfirmPutResp, error) ConfirmPut(ctx context.Context, in *ConfirmPutReq, opts ...grpc.CallOption) (*ConfirmPutResp, error)
GetUrl(ctx context.Context, in *GetUrlReq, opts ...grpc.CallOption) (*GetUrlResp, error)
GetSignalInvitationInfo(ctx context.Context, in *GetSignalInvitationInfoReq, opts ...grpc.CallOption) (*GetSignalInvitationInfoResp, error) GetSignalInvitationInfo(ctx context.Context, in *GetSignalInvitationInfoReq, opts ...grpc.CallOption) (*GetSignalInvitationInfoResp, error)
GetSignalInvitationInfoStartApp(ctx context.Context, in *GetSignalInvitationInfoStartAppReq, opts ...grpc.CallOption) (*GetSignalInvitationInfoStartAppResp, error) GetSignalInvitationInfoStartApp(ctx context.Context, in *GetSignalInvitationInfoStartAppReq, opts ...grpc.CallOption) (*GetSignalInvitationInfoStartAppResp, error)
FcmUpdateToken(ctx context.Context, in *FcmUpdateTokenReq, opts ...grpc.CallOption) (*FcmUpdateTokenResp, error) FcmUpdateToken(ctx context.Context, in *FcmUpdateTokenReq, opts ...grpc.CallOption) (*FcmUpdateTokenResp, error)
@ -804,6 +907,15 @@ func (c *thirdClient) ConfirmPut(ctx context.Context, in *ConfirmPutReq, opts ..
return out, nil return out, nil
} }
func (c *thirdClient) GetUrl(ctx context.Context, in *GetUrlReq, opts ...grpc.CallOption) (*GetUrlResp, error) {
out := new(GetUrlResp)
err := grpc.Invoke(ctx, "/OpenIMServer.third.third/GetUrl", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *thirdClient) GetSignalInvitationInfo(ctx context.Context, in *GetSignalInvitationInfoReq, opts ...grpc.CallOption) (*GetSignalInvitationInfoResp, error) { func (c *thirdClient) GetSignalInvitationInfo(ctx context.Context, in *GetSignalInvitationInfoReq, opts ...grpc.CallOption) (*GetSignalInvitationInfoResp, error) {
out := new(GetSignalInvitationInfoResp) out := new(GetSignalInvitationInfoResp)
err := grpc.Invoke(ctx, "/OpenIMServer.third.third/GetSignalInvitationInfo", in, out, c.cc, opts...) err := grpc.Invoke(ctx, "/OpenIMServer.third.third/GetSignalInvitationInfo", in, out, c.cc, opts...)
@ -846,6 +958,7 @@ type ThirdServer interface {
ApplyPut(context.Context, *ApplyPutReq) (*ApplyPutResp, error) ApplyPut(context.Context, *ApplyPutReq) (*ApplyPutResp, error)
GetPut(context.Context, *GetPutReq) (*GetPutResp, error) GetPut(context.Context, *GetPutReq) (*GetPutResp, error)
ConfirmPut(context.Context, *ConfirmPutReq) (*ConfirmPutResp, error) ConfirmPut(context.Context, *ConfirmPutReq) (*ConfirmPutResp, error)
GetUrl(context.Context, *GetUrlReq) (*GetUrlResp, error)
GetSignalInvitationInfo(context.Context, *GetSignalInvitationInfoReq) (*GetSignalInvitationInfoResp, error) GetSignalInvitationInfo(context.Context, *GetSignalInvitationInfoReq) (*GetSignalInvitationInfoResp, error)
GetSignalInvitationInfoStartApp(context.Context, *GetSignalInvitationInfoStartAppReq) (*GetSignalInvitationInfoStartAppResp, error) GetSignalInvitationInfoStartApp(context.Context, *GetSignalInvitationInfoStartAppReq) (*GetSignalInvitationInfoStartAppResp, error)
FcmUpdateToken(context.Context, *FcmUpdateTokenReq) (*FcmUpdateTokenResp, error) FcmUpdateToken(context.Context, *FcmUpdateTokenReq) (*FcmUpdateTokenResp, error)
@ -910,6 +1023,24 @@ func _Third_ConfirmPut_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Third_GetUrl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetUrlReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ThirdServer).GetUrl(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/OpenIMServer.third.third/GetUrl",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ThirdServer).GetUrl(ctx, req.(*GetUrlReq))
}
return interceptor(ctx, in, info, handler)
}
func _Third_GetSignalInvitationInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _Third_GetSignalInvitationInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetSignalInvitationInfoReq) in := new(GetSignalInvitationInfoReq)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -998,6 +1129,10 @@ var _Third_serviceDesc = grpc.ServiceDesc{
MethodName: "ConfirmPut", MethodName: "ConfirmPut",
Handler: _Third_ConfirmPut_Handler, Handler: _Third_ConfirmPut_Handler,
}, },
{
MethodName: "GetUrl",
Handler: _Third_GetUrl_Handler,
},
{ {
MethodName: "GetSignalInvitationInfo", MethodName: "GetSignalInvitationInfo",
Handler: _Third_GetSignalInvitationInfo_Handler, Handler: _Third_GetSignalInvitationInfo_Handler,
@ -1019,53 +1154,56 @@ var _Third_serviceDesc = grpc.ServiceDesc{
Metadata: "third/third.proto", Metadata: "third/third.proto",
} }
func init() { proto.RegisterFile("third/third.proto", fileDescriptor_third_ed6a664e4920a6b2) } func init() { proto.RegisterFile("third/third.proto", fileDescriptor_third_aac767b0c26bb83e) }
var fileDescriptor_third_ed6a664e4920a6b2 = []byte{ var fileDescriptor_third_aac767b0c26bb83e = []byte{
// 717 bytes of a gzipped FileDescriptorProto // 754 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xc1, 0x6e, 0xd3, 0x4a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xdf, 0x6e, 0xd3, 0x3e,
0x14, 0x95, 0x93, 0x26, 0xaf, 0xb9, 0xe9, 0x4b, 0x5f, 0xaf, 0xaa, 0x47, 0x64, 0x4a, 0x9b, 0x4e, 0x18, 0x55, 0xda, 0xb5, 0x5b, 0xbf, 0xee, 0xd7, 0xfd, 0x66, 0x4d, 0x10, 0x85, 0xb1, 0x75, 0x9e,
0xd5, 0x92, 0x4d, 0x13, 0xa9, 0x48, 0x80, 0x04, 0x42, 0xb4, 0x45, 0xad, 0x82, 0x88, 0x1a, 0x39, 0x36, 0x7a, 0xb3, 0x56, 0x1a, 0x12, 0x7f, 0x04, 0x42, 0x6c, 0x43, 0x9d, 0x8a, 0xa8, 0x56, 0xa5,
0x2d, 0x0b, 0x36, 0xc8, 0x24, 0x93, 0xc4, 0xaa, 0x3d, 0x1e, 0x3c, 0xe3, 0x16, 0xfa, 0x07, 0x88, 0x2b, 0x17, 0xdc, 0xa0, 0xd0, 0xba, 0x6d, 0xb4, 0x34, 0x31, 0xb6, 0xb3, 0xc1, 0x5e, 0x00, 0x21,
0x1d, 0x5f, 0xc3, 0x0a, 0xf1, 0x01, 0x7c, 0x14, 0xf2, 0xd8, 0x49, 0xec, 0xc4, 0x49, 0x28, 0x1b, 0xee, 0x78, 0x1a, 0x2e, 0x79, 0x00, 0x1e, 0x0a, 0xc5, 0x49, 0xda, 0xa4, 0x4d, 0xda, 0x8d, 0x1b,
0xd8, 0x44, 0x33, 0xc7, 0xe7, 0x9e, 0x39, 0x73, 0xe7, 0xde, 0xab, 0xc0, 0x9a, 0x1c, 0x58, 0x5e, 0xb8, 0x89, 0xec, 0x93, 0xf3, 0x1d, 0x1f, 0x7f, 0xf1, 0x71, 0x0b, 0xeb, 0x62, 0x68, 0xb2, 0x5e,
0xb7, 0xae, 0x7e, 0x6b, 0xdc, 0x73, 0xa5, 0x8b, 0x78, 0xc6, 0x29, 0x6b, 0x34, 0xdb, 0xd4, 0xbb, 0x4d, 0x3e, 0xab, 0x94, 0x39, 0xc2, 0x41, 0xe8, 0x8c, 0x12, 0xbb, 0xd1, 0x6c, 0x13, 0x76, 0x49,
0xa2, 0x5e, 0x4d, 0x7d, 0xd1, 0xef, 0x07, 0xd8, 0x7e, 0xa3, 0xb9, 0x1f, 0xa2, 0x75, 0x7e, 0xd9, 0x58, 0x55, 0xbe, 0xd1, 0x1e, 0x78, 0xd8, 0x41, 0xa3, 0x79, 0xe0, 0xa3, 0x35, 0x7a, 0x31, 0xa8,
0xaf, 0x2b, 0x76, 0x5d, 0x74, 0x2f, 0xaf, 0x45, 0xfd, 0x5a, 0x84, 0xc1, 0xe4, 0xb3, 0x06, 0xc5, 0x49, 0x76, 0x8d, 0xf7, 0x2e, 0xae, 0x78, 0xed, 0x8a, 0xfb, 0xc5, 0xf8, 0x9b, 0x02, 0xc5, 0x23,
0x43, 0xce, 0xed, 0x8f, 0x2d, 0x5f, 0x1a, 0xf4, 0x3d, 0x22, 0x2c, 0x31, 0xd3, 0xa1, 0x65, 0xad, 0x4a, 0xad, 0xcf, 0x2d, 0x57, 0xe8, 0xe4, 0x23, 0x42, 0xb0, 0x64, 0x1b, 0x23, 0xa2, 0x2a, 0x65,
0xa2, 0x55, 0x0b, 0x86, 0x5a, 0x07, 0x98, 0xb0, 0x6e, 0x68, 0x39, 0x53, 0xd1, 0xaa, 0x59, 0x43, 0xa5, 0x52, 0xd0, 0xe5, 0xd8, 0xc3, 0xb8, 0x79, 0x4d, 0xd4, 0x4c, 0x59, 0xa9, 0x64, 0x75, 0x39,
0xad, 0x03, 0x6c, 0x60, 0x8a, 0x41, 0x39, 0x1b, 0xf2, 0x82, 0x35, 0x12, 0x58, 0xe9, 0x79, 0x66, 0xf6, 0xb0, 0xa1, 0xc1, 0x87, 0x6a, 0xd6, 0xe7, 0x79, 0x63, 0x84, 0x61, 0xb5, 0xcf, 0x8c, 0xc1,
0xdf, 0xa1, 0x4c, 0xb6, 0x03, 0xfe, 0x92, 0xe2, 0x27, 0x30, 0xdc, 0x80, 0x42, 0xc7, 0xa6, 0x26, 0x88, 0xd8, 0xa2, 0xed, 0xf1, 0x97, 0x24, 0x3f, 0x86, 0xa1, 0x4d, 0x28, 0x74, 0x2d, 0x62, 0xd8,
0x3b, 0xb7, 0x1c, 0x5a, 0xce, 0x29, 0xc2, 0x18, 0x20, 0x12, 0x56, 0xc6, 0x66, 0x04, 0xc7, 0xff, 0xe7, 0xe6, 0x88, 0xa8, 0x39, 0x49, 0x98, 0x00, 0x58, 0xc0, 0xea, 0xc4, 0x0c, 0xa7, 0xe8, 0x7f,
0x20, 0xeb, 0x7b, 0x76, 0x64, 0x26, 0x58, 0xe2, 0x3a, 0xe4, 0xb8, 0x2f, 0x1b, 0x2f, 0x94, 0x99, 0xc8, 0xba, 0xcc, 0x0a, 0xcc, 0x78, 0x43, 0xb4, 0x01, 0x39, 0xea, 0x8a, 0xc6, 0x2b, 0x69, 0xa6,
0x82, 0x11, 0x6e, 0xa6, 0x4e, 0xce, 0xa6, 0x9c, 0x5c, 0x86, 0x7f, 0x5a, 0xbe, 0xbc, 0x30, 0x5e, 0xa0, 0xfb, 0x93, 0x99, 0x95, 0xb3, 0x09, 0x2b, 0xab, 0xb0, 0xdc, 0x72, 0x45, 0x47, 0x7f, 0xc3,
0x89, 0x72, 0xae, 0x92, 0xad, 0x16, 0x8c, 0xe1, 0x96, 0xec, 0xc2, 0xbf, 0xc7, 0x2e, 0xeb, 0x59, 0xd5, 0x5c, 0x39, 0x5b, 0x29, 0xe8, 0xe1, 0x14, 0xef, 0xc1, 0x7f, 0x27, 0x8e, 0xdd, 0x37, 0xd9,
0x9e, 0x13, 0x25, 0x61, 0x74, 0x88, 0x16, 0x3b, 0x84, 0x10, 0x28, 0xc5, 0x69, 0x69, 0xf6, 0xc8, 0x28, 0x68, 0xc2, 0x78, 0x11, 0x25, 0xb2, 0x08, 0xc6, 0x50, 0x8a, 0xd2, 0x92, 0xec, 0xe1, 0xa7,
0x36, 0x14, 0x4e, 0xa9, 0x9c, 0x2b, 0xf3, 0x18, 0x4a, 0x21, 0xe5, 0x24, 0x72, 0x37, 0xca, 0xaf, 0x50, 0x38, 0x25, 0xa2, 0xc3, 0xac, 0xb4, 0x5e, 0xaa, 0xb0, 0x4c, 0x3e, 0x51, 0x93, 0x11, 0x1e,
0x96, 0x92, 0xdf, 0xcc, 0x38, 0xbf, 0xe4, 0x87, 0x06, 0x30, 0x54, 0x17, 0xfc, 0xcf, 0x3e, 0x15, 0xb4, 0x33, 0x9c, 0xe2, 0x3a, 0x40, 0x58, 0x9a, 0xb8, 0xf3, 0x1b, 0x7e, 0x05, 0xbc, 0x23, 0x2d,
0x3e, 0x87, 0xc2, 0x90, 0x2d, 0xca, 0xf9, 0x4a, 0xb6, 0x5a, 0x3c, 0x20, 0xb5, 0xe9, 0x4a, 0xac, 0xcc, 0xdd, 0xc9, 0x13, 0x28, 0xf9, 0x94, 0x7a, 0xd0, 0xa0, 0xb1, 0xb8, 0x92, 0x20, 0x9e, 0x89,
0x25, 0xef, 0x6a, 0x8c, 0x83, 0xc8, 0x33, 0xd0, 0x4f, 0xa9, 0x6c, 0x5b, 0x7d, 0x66, 0xda, 0x0d, 0x88, 0xff, 0x52, 0xa4, 0xcb, 0xb0, 0x01, 0x7f, 0xf5, 0xb4, 0xa0, 0x97, 0x50, 0x08, 0xd9, 0x5c,
0x76, 0x65, 0x49, 0x53, 0x5a, 0x2e, 0x6b, 0xb0, 0x9e, 0x1b, 0x24, 0xaf, 0x02, 0xc5, 0x63, 0xdb, 0xcd, 0x97, 0xb3, 0x95, 0xe2, 0x21, 0xae, 0xce, 0x86, 0xa1, 0x1a, 0xdf, 0xab, 0x3e, 0x29, 0xc2,
0xa2, 0x4c, 0x36, 0x45, 0x7f, 0x94, 0xc2, 0x38, 0x44, 0xbe, 0x6a, 0x70, 0x77, 0xa6, 0x80, 0xe0, 0x2f, 0x40, 0x3b, 0x25, 0xa2, 0x6d, 0x0e, 0x6c, 0xc3, 0x6a, 0xd8, 0x97, 0xa6, 0x30, 0x84, 0xe9,
0xf8, 0x12, 0x4a, 0x56, 0x02, 0x55, 0x22, 0x53, 0x36, 0x55, 0x43, 0xd4, 0x26, 0xe2, 0x27, 0x22, 0xd8, 0x0d, 0xbb, 0xef, 0x78, 0xcd, 0x2b, 0x43, 0xf1, 0xc4, 0x32, 0x89, 0x2d, 0x9a, 0x7c, 0x30,
0xb1, 0x09, 0xab, 0x6e, 0xaf, 0x67, 0x5b, 0x8c, 0xb6, 0x7c, 0x31, 0x50, 0x62, 0x19, 0x25, 0xb6, 0x6e, 0x61, 0x14, 0xc2, 0x3f, 0x14, 0xb8, 0x97, 0x2a, 0xc0, 0x29, 0x7a, 0x0d, 0x25, 0x33, 0x86,
0x93, 0x26, 0x76, 0x96, 0xa4, 0x1a, 0x93, 0xb1, 0xe4, 0x29, 0x90, 0x19, 0xce, 0xdb, 0xd2, 0xf4, 0x4a, 0x91, 0x19, 0x9b, 0x32, 0x93, 0xd5, 0xa9, 0xfa, 0xa9, 0x4a, 0xd4, 0x84, 0x35, 0xa7, 0xdf,
0xe4, 0x21, 0xe7, 0x41, 0x0a, 0xfe, 0x87, 0xbc, 0x2f, 0xa8, 0x37, 0xba, 0x7d, 0xb4, 0x23, 0xdf, 0xb7, 0x4c, 0x9b, 0xb4, 0x5c, 0x3e, 0x94, 0x62, 0x19, 0x29, 0xb6, 0x9b, 0x24, 0x76, 0x16, 0xa7,
0x35, 0xd8, 0x59, 0x18, 0xfe, 0x77, 0x27, 0xe0, 0x93, 0x06, 0x6b, 0x27, 0x1d, 0xe7, 0x82, 0x77, 0xea, 0xd3, 0xb5, 0xf8, 0x39, 0xe0, 0x14, 0xe7, 0x6d, 0x61, 0x30, 0x71, 0x44, 0xa9, 0xd7, 0x82,
0x4d, 0x49, 0xcf, 0xdd, 0x4b, 0xca, 0x82, 0x0b, 0x6f, 0x02, 0xb4, 0x6c, 0x53, 0xf6, 0x5c, 0xcf, 0x3b, 0x90, 0x77, 0x39, 0x61, 0xe3, 0xdd, 0x07, 0x33, 0xfc, 0x53, 0x81, 0xdd, 0x85, 0xe5, 0xff,
0x89, 0x2e, 0x9d, 0x33, 0x62, 0x08, 0xea, 0xb0, 0x7c, 0xd2, 0x71, 0x14, 0x3d, 0x6a, 0x8c, 0xd1, 0x76, 0x03, 0xbe, 0x2a, 0xb0, 0x5e, 0xef, 0x8e, 0x3a, 0xb4, 0x67, 0x08, 0x72, 0xee, 0x5c, 0x10,
0x3e, 0x68, 0x6f, 0xb3, 0xd3, 0x71, 0x7d, 0x26, 0xa3, 0x42, 0x1f, 0x6e, 0x03, 0x55, 0xfa, 0x81, 0xdb, 0xdb, 0xf0, 0x16, 0x40, 0xcb, 0x32, 0x44, 0xdf, 0x61, 0xa3, 0x60, 0xd3, 0x39, 0x3d, 0x82,
0x5b, 0x1e, 0x55, 0x85, 0x1c, 0x56, 0x7a, 0x0c, 0x21, 0xeb, 0x80, 0x93, 0x56, 0x04, 0x27, 0x2d, 0x20, 0x0d, 0x56, 0xea, 0xdd, 0x91, 0xa4, 0x07, 0xc1, 0x18, 0xcf, 0xbd, 0x6c, 0x1b, 0xdd, 0xae,
0x28, 0xb5, 0x69, 0x90, 0xca, 0x23, 0xb3, 0xdb, 0xa7, 0x73, 0x9e, 0x03, 0xf7, 0xa0, 0x74, 0xc8, 0xe3, 0xda, 0x22, 0x38, 0xe8, 0xe1, 0xd4, 0x53, 0xf5, 0x63, 0x2e, 0x0f, 0xb2, 0x7f, 0xd2, 0x23,
0xf9, 0x05, 0xf3, 0xa8, 0xd9, 0x3d, 0x56, 0x06, 0x32, 0xca, 0xf9, 0x04, 0x4a, 0xd6, 0x60, 0x35, 0x08, 0xde, 0x00, 0x34, 0x6d, 0x85, 0x53, 0xdc, 0x82, 0x52, 0x9b, 0x78, 0xad, 0x3c, 0x36, 0x7a,
0xa1, 0x28, 0xf8, 0xc1, 0xb7, 0x1c, 0xe4, 0x54, 0x9b, 0x60, 0x13, 0x96, 0x87, 0x93, 0x0f, 0xb7, 0x03, 0x32, 0xe7, 0x73, 0xa0, 0x7d, 0x28, 0x1d, 0x51, 0xda, 0xb1, 0x19, 0x31, 0x7a, 0x27, 0xd2,
0xd2, 0xfa, 0x28, 0x36, 0xa4, 0xf5, 0xca, 0x7c, 0x82, 0xe0, 0x78, 0x0a, 0xf9, 0xb0, 0xf1, 0xf0, 0x40, 0x46, 0x3a, 0x9f, 0x42, 0xf1, 0x3a, 0xac, 0xc5, 0x14, 0x39, 0x3d, 0xfc, 0x92, 0x87, 0x9c,
0xde, 0xec, 0xa6, 0x0c, 0xa4, 0x36, 0xe7, 0x7d, 0x16, 0x1c, 0xdb, 0x00, 0xe3, 0xa1, 0x87, 0xdb, 0x8c, 0x09, 0x6a, 0xc2, 0x4a, 0x78, 0xf9, 0xa2, 0xed, 0xa4, 0x1c, 0x45, 0x7e, 0x27, 0xb4, 0xf2,
0x69, 0xec, 0xc4, 0xec, 0xd4, 0xc9, 0x22, 0x8a, 0xe0, 0x78, 0x03, 0x77, 0x66, 0xd4, 0x2f, 0xd6, 0x7c, 0x02, 0xa7, 0xe8, 0x14, 0xf2, 0x7e, 0xf0, 0xd0, 0xfd, 0xf4, 0x50, 0x7a, 0x52, 0x5b, 0xf3,
0x66, 0xf8, 0x99, 0x31, 0x26, 0xf4, 0xfa, 0xad, 0xf8, 0x82, 0xe3, 0x17, 0x0d, 0xb6, 0x16, 0x34, 0x5e, 0x73, 0x8a, 0xda, 0x00, 0x93, 0x7b, 0x17, 0xed, 0x24, 0xb1, 0x63, 0xd7, 0xb7, 0x86, 0x17,
0x0f, 0x3e, 0xbc, 0x85, 0x68, 0xac, 0x61, 0xf5, 0x47, 0xbf, 0x15, 0x27, 0x38, 0xbe, 0x85, 0x52, 0x51, 0xc6, 0xee, 0x3a, 0xcc, 0x4a, 0x75, 0xe7, 0x5f, 0xe2, 0xa9, 0xee, 0xc2, 0x8b, 0xfa, 0x1a,
0xb2, 0x04, 0x71, 0x37, 0x4d, 0x6a, 0xaa, 0x63, 0xf4, 0xbd, 0x5f, 0xa1, 0x09, 0x8e, 0xaf, 0xa1, 0xee, 0xa6, 0x04, 0x01, 0x55, 0x53, 0x4a, 0x53, 0xee, 0x1b, 0xad, 0x76, 0x2b, 0x3e, 0xa7, 0xe8,
0x18, 0xab, 0x3d, 0x4c, 0x7d, 0xa4, 0x64, 0xb9, 0xeb, 0x3b, 0x0b, 0x39, 0x82, 0x1f, 0x6d, 0xbe, 0xbb, 0x02, 0xdb, 0x0b, 0x52, 0x88, 0x1e, 0xdd, 0x42, 0x34, 0x92, 0x7c, 0xed, 0xf1, 0x1f, 0xd5,
0xd9, 0x08, 0x59, 0xb1, 0x7f, 0x18, 0x8a, 0xf9, 0x44, 0xfd, 0xbe, 0xcb, 0x2b, 0xe8, 0xc1, 0xcf, 0x71, 0x8a, 0xde, 0x43, 0x29, 0x7e, 0x96, 0xd1, 0x5e, 0x92, 0xd4, 0x4c, 0xf4, 0xb4, 0xfd, 0x9b,
0x00, 0x00, 0x00, 0xff, 0xff, 0x6f, 0x2e, 0xa0, 0xaa, 0xb7, 0x08, 0x00, 0x00, 0xd0, 0x38, 0x45, 0x6f, 0xa1, 0x18, 0x39, 0xc4, 0x28, 0xf1, 0x6b, 0xc7, 0x73, 0xa3, 0xed, 0x2e,
0xe4, 0x70, 0x7a, 0xbc, 0xf5, 0x6e, 0xd3, 0x67, 0x45, 0xfe, 0x2d, 0x49, 0xe6, 0x33, 0xf9, 0xfc,
0x90, 0x97, 0xd0, 0xc3, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x87, 0x96, 0xee, 0x73, 0x83, 0x09,
0x00, 0x00,
} }

@ -15,7 +15,7 @@ message ApplyPutResp {
string url = 1; string url = 1;
string putID = 2; string putID = 2;
int64 fragmentSize = 3; int64 fragmentSize = 3;
// int64 expirationTime = 4; // int64 expirationTime = 4;
repeated string PutURLs = 5; repeated string PutURLs = 5;
} }
@ -27,6 +27,17 @@ message ConfirmPutResp {
string url = 1; string url = 1;
} }
message GetUrlReq {
string name = 1; //
int64 expires = 2; // url
}
message GetUrlResp {
string url = 1;
int64 size = 2;
string hash = 3;
}
message GetPutReq { message GetPutReq {
string putID = 1; string putID = 1;
} }
@ -85,6 +96,7 @@ service third {
rpc ApplyPut(ApplyPutReq) returns(ApplyPutResp); rpc ApplyPut(ApplyPutReq) returns(ApplyPutResp);
rpc GetPut(GetPutReq) returns(GetPutResp); rpc GetPut(GetPutReq) returns(GetPutResp);
rpc ConfirmPut(ConfirmPutReq) returns(ConfirmPutResp); rpc ConfirmPut(ConfirmPutReq) returns(ConfirmPutResp);
rpc GetUrl(GetUrlReq) returns(GetUrlResp);
rpc GetSignalInvitationInfo(GetSignalInvitationInfoReq) returns(GetSignalInvitationInfoResp); rpc GetSignalInvitationInfo(GetSignalInvitationInfoReq) returns(GetSignalInvitationInfoResp);
rpc GetSignalInvitationInfoStartApp(GetSignalInvitationInfoStartAppReq) returns(GetSignalInvitationInfoStartAppResp); rpc GetSignalInvitationInfoStartApp(GetSignalInvitationInfoStartAppReq) returns(GetSignalInvitationInfoStartAppResp);

Loading…
Cancel
Save