Compare commits
1 commit
main
...
call-signa
Author | SHA1 | Date | |
---|---|---|---|
|
4e7a2fe7c7 |
4 changed files with 161 additions and 5527 deletions
5525
protocol.json
5525
protocol.json
File diff suppressed because one or more lines are too long
|
@ -284,6 +284,13 @@ func mkerr(response client_protocol.BasicResponse) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
case "UnsupportedGroupError":
|
||||||
|
result := UnsupportedGroupError{}
|
||||||
|
err := json.Unmarshal(response.Error, &result)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return result
|
||||||
case "UntrustedIdentityError":
|
case "UntrustedIdentityError":
|
||||||
result := UntrustedIdentityError{}
|
result := UntrustedIdentityError{}
|
||||||
err := json.Unmarshal(response.Error, &result)
|
err := json.Unmarshal(response.Error, &result)
|
||||||
|
@ -645,6 +652,15 @@ func (e UnregisteredUserError) Error() string {
|
||||||
return e.Message
|
return e.Message
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnsupportedGroupError: returned in response to use v1 groups, which are no longer supported
|
||||||
|
type UnsupportedGroupError struct {
|
||||||
|
Message string `json:"message,omitempty" yaml:"message,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e UnsupportedGroupError) Error() string {
|
||||||
|
return e.Message
|
||||||
|
}
|
||||||
|
|
||||||
type UntrustedIdentityError struct {
|
type UntrustedIdentityError struct {
|
||||||
Identifier string `json:"identifier,omitempty" yaml:"identifier,omitempty"`
|
Identifier string `json:"identifier,omitempty" yaml:"identifier,omitempty"`
|
||||||
IdentityKey **IdentityKey `json:"identity_key,omitempty" yaml:"identity_key,omitempty"`
|
IdentityKey **IdentityKey `json:"identity_key,omitempty" yaml:"identity_key,omitempty"`
|
||||||
|
|
|
@ -98,6 +98,30 @@ func (r *AddServerRequest) Submit(conn *signald.Signald) (response string, err e
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *AnswerCallRequest) Submit(conn *signald.Signald) (err error) {
|
||||||
|
r.Version = "v1"
|
||||||
|
r.Type = "answer_call"
|
||||||
|
if r.ID == "" {
|
||||||
|
r.ID = signald.GenerateID()
|
||||||
|
}
|
||||||
|
responseChannel := conn.GetResponseListener(r.ID)
|
||||||
|
defer conn.CloseResponseListener(r.ID)
|
||||||
|
err = conn.RawRequest(r)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("signald-go: error submitting request to signald")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rawResponse := <-responseChannel
|
||||||
|
if rawResponse.Error != nil {
|
||||||
|
err = mkerr(rawResponse)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Submit: approve a request to join a group
|
// Submit: approve a request to join a group
|
||||||
func (r *ApproveMembershipRequest) Submit(conn *signald.Signald) (response JsonGroupV2Info, err error) {
|
func (r *ApproveMembershipRequest) Submit(conn *signald.Signald) (response JsonGroupV2Info, err error) {
|
||||||
r.Version = "v1"
|
r.Version = "v1"
|
||||||
|
@ -593,6 +617,30 @@ func (r *GroupLinkInfoRequest) Submit(conn *signald.Signald) (response JsonGroup
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *HangupCallRequest) Submit(conn *signald.Signald) (err error) {
|
||||||
|
r.Version = "v1"
|
||||||
|
r.Type = "hangup_call"
|
||||||
|
if r.ID == "" {
|
||||||
|
r.ID = signald.GenerateID()
|
||||||
|
}
|
||||||
|
responseChannel := conn.GetResponseListener(r.ID)
|
||||||
|
defer conn.CloseResponseListener(r.ID)
|
||||||
|
err = conn.RawRequest(r)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("signald-go: error submitting request to signald")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rawResponse := <-responseChannel
|
||||||
|
if rawResponse.Error != nil {
|
||||||
|
err = mkerr(rawResponse)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Submit: Determine whether an account identifier is registered on the Signal service.
|
// Submit: Determine whether an account identifier is registered on the Signal service.
|
||||||
func (r *IsIdentifierRegisteredRequest) Submit(conn *signald.Signald) (response BooleanMessage, err error) {
|
func (r *IsIdentifierRegisteredRequest) Submit(conn *signald.Signald) (response BooleanMessage, err error) {
|
||||||
r.Version = "v1"
|
r.Version = "v1"
|
||||||
|
@ -1079,6 +1127,54 @@ func (r *SendRequest) Submit(conn *signald.Signald) (response SendResponse, err
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *SendCallOfferRequest) Submit(conn *signald.Signald) (err error) {
|
||||||
|
r.Version = "v1"
|
||||||
|
r.Type = "send_call_offer"
|
||||||
|
if r.ID == "" {
|
||||||
|
r.ID = signald.GenerateID()
|
||||||
|
}
|
||||||
|
responseChannel := conn.GetResponseListener(r.ID)
|
||||||
|
defer conn.CloseResponseListener(r.ID)
|
||||||
|
err = conn.RawRequest(r)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("signald-go: error submitting request to signald")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rawResponse := <-responseChannel
|
||||||
|
if rawResponse.Error != nil {
|
||||||
|
err = mkerr(rawResponse)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SendIceUpdatesRequest) Submit(conn *signald.Signald) (err error) {
|
||||||
|
r.Version = "v1"
|
||||||
|
r.Type = "send_ice_updates"
|
||||||
|
if r.ID == "" {
|
||||||
|
r.ID = signald.GenerateID()
|
||||||
|
}
|
||||||
|
responseChannel := conn.GetResponseListener(r.ID)
|
||||||
|
defer conn.CloseResponseListener(r.ID)
|
||||||
|
err = conn.RawRequest(r)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("signald-go: error submitting request to signald")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rawResponse := <-responseChannel
|
||||||
|
if rawResponse.Error != nil {
|
||||||
|
err = mkerr(rawResponse)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Submit: send a mobilecoin payment
|
// Submit: send a mobilecoin payment
|
||||||
func (r *SendPaymentRequest) Submit(conn *signald.Signald) (response SendResponse, err error) {
|
func (r *SendPaymentRequest) Submit(conn *signald.Signald) (response SendResponse, err error) {
|
||||||
r.Version = "v1"
|
r.Version = "v1"
|
||||||
|
|
|
@ -49,6 +49,16 @@ type AllIdentityKeyList struct {
|
||||||
IdentityKeys []*IdentityKeyList `json:"identity_keys,omitempty" yaml:"identity_keys,omitempty"`
|
IdentityKeys []*IdentityKeyList `json:"identity_keys,omitempty" yaml:"identity_keys,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AnswerCallRequest struct {
|
||||||
|
Request
|
||||||
|
Account string `json:"account,omitempty" yaml:"account,omitempty"` // the local account to use
|
||||||
|
CallId int64 `json:"call_id,omitempty" yaml:"call_id,omitempty"` // the id of the call
|
||||||
|
DestinationDeviceId int32 `json:"destination_device_id,omitempty" yaml:"destination_device_id,omitempty"`
|
||||||
|
Multiring bool `json:"multiring,omitempty" yaml:"multiring,omitempty"`
|
||||||
|
Recipient *JsonAddress `json:"recipient,omitempty" yaml:"recipient,omitempty"` // the address of the caller
|
||||||
|
Sdp string `json:"sdp,omitempty" yaml:"sdp,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
type AnswerMessage struct {
|
type AnswerMessage struct {
|
||||||
ID int64 `json:"id,omitempty" yaml:"id,omitempty"`
|
ID int64 `json:"id,omitempty" yaml:"id,omitempty"`
|
||||||
Opaque string `json:"opaque,omitempty" yaml:"opaque,omitempty"`
|
Opaque string `json:"opaque,omitempty" yaml:"opaque,omitempty"`
|
||||||
|
@ -263,7 +273,7 @@ type GroupLinkInfoRequest struct {
|
||||||
|
|
||||||
type GroupList struct {
|
type GroupList struct {
|
||||||
Groups []*JsonGroupV2Info `json:"groups,omitempty" yaml:"groups,omitempty"`
|
Groups []*JsonGroupV2Info `json:"groups,omitempty" yaml:"groups,omitempty"`
|
||||||
LegacyGroups []*JsonGroupInfo `json:"legacyGroups,omitempty" yaml:"legacyGroups,omitempty"`
|
LegacyGroups []*JsonGroupInfo `json:"legacyGroups,omitempty" yaml:"legacyGroups,omitempty"` // list of legacy (v1) groups, no longer supported (will always be empty)
|
||||||
}
|
}
|
||||||
|
|
||||||
type GroupMember struct {
|
type GroupMember struct {
|
||||||
|
@ -284,6 +294,17 @@ type GroupRequestingMember struct {
|
||||||
UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
|
UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type HangupCallRequest struct {
|
||||||
|
Request
|
||||||
|
Account string `json:"account,omitempty" yaml:"account,omitempty"` // the local account to use
|
||||||
|
CallId int64 `json:"call_id,omitempty" yaml:"call_id,omitempty"` // the id of the call
|
||||||
|
DestinationDeviceId int32 `json:"destination_device_id,omitempty" yaml:"destination_device_id,omitempty"`
|
||||||
|
DeviceId int32 `json:"device_id,omitempty" yaml:"device_id,omitempty"`
|
||||||
|
Multiring bool `json:"multiring,omitempty" yaml:"multiring,omitempty"`
|
||||||
|
Recipient *JsonAddress `json:"recipient,omitempty" yaml:"recipient,omitempty"` // the address of the caller
|
||||||
|
Type string `json:"type,omitempty" yaml:"type,omitempty"` // hangup type, options are: normal, accepted, declined, busy, need_permission
|
||||||
|
}
|
||||||
|
|
||||||
type HangupMessage struct {
|
type HangupMessage struct {
|
||||||
DeviceId int32 `json:"device_id,omitempty" yaml:"device_id,omitempty"`
|
DeviceId int32 `json:"device_id,omitempty" yaml:"device_id,omitempty"`
|
||||||
ID int64 `json:"id,omitempty" yaml:"id,omitempty"`
|
ID int64 `json:"id,omitempty" yaml:"id,omitempty"`
|
||||||
|
@ -293,7 +314,9 @@ type HangupMessage struct {
|
||||||
|
|
||||||
type IceUpdateMessage struct {
|
type IceUpdateMessage struct {
|
||||||
ID int64 `json:"id,omitempty" yaml:"id,omitempty"`
|
ID int64 `json:"id,omitempty" yaml:"id,omitempty"`
|
||||||
Opaque string `json:"opaque,omitempty" yaml:"opaque,omitempty"`
|
Line int32 `json:"line,omitempty" yaml:"line,omitempty"`
|
||||||
|
Mid string `json:"mid,omitempty" yaml:"mid,omitempty"`
|
||||||
|
Opaque string `json:"opaque,omitempty" yaml:"opaque,omitempty"` // the base64 encoded protobuf value.
|
||||||
Sdp string `json:"sdp,omitempty" yaml:"sdp,omitempty"`
|
Sdp string `json:"sdp,omitempty" yaml:"sdp,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -492,6 +515,7 @@ type JsonSentTranscriptMessage struct {
|
||||||
ExpirationStartTimestamp int64 `json:"expirationStartTimestamp,omitempty" yaml:"expirationStartTimestamp,omitempty"`
|
ExpirationStartTimestamp int64 `json:"expirationStartTimestamp,omitempty" yaml:"expirationStartTimestamp,omitempty"`
|
||||||
IsRecipientUpdate bool `json:"isRecipientUpdate,omitempty" yaml:"isRecipientUpdate,omitempty"`
|
IsRecipientUpdate bool `json:"isRecipientUpdate,omitempty" yaml:"isRecipientUpdate,omitempty"`
|
||||||
Message *JsonDataMessage `json:"message,omitempty" yaml:"message,omitempty"`
|
Message *JsonDataMessage `json:"message,omitempty" yaml:"message,omitempty"`
|
||||||
|
Story *StoryMessage `json:"story,omitempty" yaml:"story,omitempty"`
|
||||||
Timestamp int64 `json:"timestamp,omitempty" yaml:"timestamp,omitempty"`
|
Timestamp int64 `json:"timestamp,omitempty" yaml:"timestamp,omitempty"`
|
||||||
UnidentifiedStatus map[string]string `json:"unidentifiedStatus,omitempty" yaml:"unidentifiedStatus,omitempty"`
|
UnidentifiedStatus map[string]string `json:"unidentifiedStatus,omitempty" yaml:"unidentifiedStatus,omitempty"`
|
||||||
}
|
}
|
||||||
|
@ -600,6 +624,7 @@ type Profile struct {
|
||||||
Avatar string `json:"avatar,omitempty" yaml:"avatar,omitempty"` // path to avatar on local disk
|
Avatar string `json:"avatar,omitempty" yaml:"avatar,omitempty"` // path to avatar on local disk
|
||||||
Capabilities *Capabilities `json:"capabilities,omitempty" yaml:"capabilities,omitempty"`
|
Capabilities *Capabilities `json:"capabilities,omitempty" yaml:"capabilities,omitempty"`
|
||||||
Color string `json:"color,omitempty" yaml:"color,omitempty"` // color of the chat with this user
|
Color string `json:"color,omitempty" yaml:"color,omitempty"` // color of the chat with this user
|
||||||
|
ContactName string `json:"contact_name,omitempty" yaml:"contact_name,omitempty"` // The user's name from local contact names
|
||||||
Emoji string `json:"emoji,omitempty" yaml:"emoji,omitempty"`
|
Emoji string `json:"emoji,omitempty" yaml:"emoji,omitempty"`
|
||||||
ExpirationTime int32 `json:"expiration_time,omitempty" yaml:"expiration_time,omitempty"`
|
ExpirationTime int32 `json:"expiration_time,omitempty" yaml:"expiration_time,omitempty"`
|
||||||
InboxPosition int32 `json:"inbox_position,omitempty" yaml:"inbox_position,omitempty"`
|
InboxPosition int32 `json:"inbox_position,omitempty" yaml:"inbox_position,omitempty"`
|
||||||
|
@ -716,6 +741,26 @@ type ResolveAddressRequest struct {
|
||||||
Partial *JsonAddress `json:"partial,omitempty" yaml:"partial,omitempty"` // The partial address, missing fields
|
Partial *JsonAddress `json:"partial,omitempty" yaml:"partial,omitempty"` // The partial address, missing fields
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SendCallOfferRequest struct {
|
||||||
|
Request
|
||||||
|
Account string `json:"account,omitempty" yaml:"account,omitempty"` // the local account to use
|
||||||
|
CallId int64 `json:"call_id,omitempty" yaml:"call_id,omitempty"` // the id of the call
|
||||||
|
CallType string `json:"call_type,omitempty" yaml:"call_type,omitempty"` // must be one of 'audio_call' or 'video_call'
|
||||||
|
DestinationDeviceId int32 `json:"destination_device_id,omitempty" yaml:"destination_device_id,omitempty"`
|
||||||
|
Multring bool `json:"multring,omitempty" yaml:"multring,omitempty"`
|
||||||
|
Recipient *JsonAddress `json:"recipient,omitempty" yaml:"recipient,omitempty"` // the address of the caller
|
||||||
|
Sdp string `json:"sdp,omitempty" yaml:"sdp,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SendIceUpdatesRequest struct {
|
||||||
|
Request
|
||||||
|
Account string `json:"account,omitempty" yaml:"account,omitempty"` // the local account to use
|
||||||
|
DestinationDeviceId int32 `json:"destination_device_id,omitempty" yaml:"destination_device_id,omitempty"`
|
||||||
|
Multiring bool `json:"multiring,omitempty" yaml:"multiring,omitempty"`
|
||||||
|
Recipient *JsonAddress `json:"recipient,omitempty" yaml:"recipient,omitempty"` // the address of the caller
|
||||||
|
Updates []*IceUpdateMessage `json:"updates,omitempty" yaml:"updates,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// SendPaymentRequest: send a mobilecoin payment
|
// SendPaymentRequest: send a mobilecoin payment
|
||||||
type SendPaymentRequest struct {
|
type SendPaymentRequest struct {
|
||||||
Request
|
Request
|
||||||
|
|
Loading…
Reference in a new issue