Documentation ¶
Index ¶
- Constants
- Variables
- func MessageSkipPush(r *messageRequest)
- func Version() string
- type APNConfig
- type AppConfig
- type AppSettings
- func (a *AppSettings) SetAPNConfig(c APNConfig) *AppSettings
- func (a *AppSettings) SetDisableAuth(b bool) *AppSettings
- func (a *AppSettings) SetDisablePermissions(b bool) *AppSettings
- func (a *AppSettings) SetFirebaseConfig(c FirebaseConfig) *AppSettings
- func (a *AppSettings) SetMultiTenant(b bool) *AppSettings
- func (a *AppSettings) SetWebhookURL(s string) *AppSettings
- type Attachment
- type Channel
- func (ch *Channel) AcceptInvite(userID string, message *Message) error
- func (ch *Channel) AddMembers(userIDs []string, message *Message) error
- func (ch *Channel) AddModerators(userIDs ...string) error
- func (ch *Channel) AddModeratorsWithMessage(userIDs []string, msg *Message) error
- func (ch *Channel) BanUser(targetID, userID string, options map[string]interface{}) error
- func (ch *Channel) Delete() error
- func (ch *Channel) DeleteFile(location string) error
- func (ch *Channel) DeleteImage(location string) error
- func (ch *Channel) DeleteReaction(messageID, reactionType, userID string) (*Message, error)
- func (ch *Channel) DemoteModerators(userIDs ...string) error
- func (ch *Channel) DemoteModeratorsWithMessage(userIDs []string, msg *Message) error
- func (ch *Channel) GetReactions(messageID string, options map[string][]string) ([]*Reaction, error)
- func (ch *Channel) GetReplies(parentID string, options map[string][]string) ([]*Message, error)
- func (ch *Channel) Hide(userID string) error
- func (ch *Channel) HideWithHistoryClear(userID string) error
- func (ch *Channel) ImportMessages(messages ...*Message) (*ImportChannelMessagesResponse, error)
- func (ch *Channel) InviteMembers(userIDs ...string) error
- func (ch *Channel) InviteMembersWithMessage(userIDs []string, msg *Message) error
- func (ch *Channel) MarkRead(userID string, options map[string]interface{}) error
- func (ch Channel) MarshalJSON() ([]byte, error)
- func (ch *Channel) Mute(userID string, expiration *time.Duration) (*ChannelMuteResponse, error)
- func (ch *Channel) PartialUpdate(update PartialUpdate) error
- func (ch *Channel) Query(data map[string]interface{}) error
- func (ch *Channel) QueryMembers(q *QueryOption, sorters ...*SortOption) ([]*ChannelMember, error)
- func (ch *Channel) RejectInvite(userID string, message *Message) error
- func (ch *Channel) RemoveMembers(userIDs []string, message *Message) error
- func (ch *Channel) SendAction(msgID string, formData map[string]string) (*Message, error)
- func (ch *Channel) SendEvent(event *Event, userID string) error
- func (ch *Channel) SendFile(request SendFileRequest) (string, error)
- func (ch *Channel) SendImage(request SendFileRequest) (string, error)
- func (ch *Channel) SendMessage(message *Message, userID string, options ...SendMessageOption) (*Message, error)
- func (ch *Channel) SendReaction(reaction *Reaction, messageID, userID string) (*Message, error)
- func (ch *Channel) Show(userID string) error
- func (ch *Channel) Truncate() error
- func (ch *Channel) UnBanUser(targetID string, options map[string]string) error
- func (ch *Channel) UnmarshalJSON(data []byte) error
- func (ch *Channel) Unmute(userID string) error
- func (ch *Channel) Update(options map[string]interface{}, message *Message) error
- type ChannelConfig
- type ChannelMember
- type ChannelMute
- type ChannelMuteResponse
- type ChannelRead
- type ChannelType
- type Client
- func (c *Client) AddDevice(device *Device) error
- func (c *Client) BanUser(targetID, userID string, options map[string]interface{}) error
- func (c *Client) Channel(channelType, channelID string) *Channel
- func (c *Client) CreateChannel(chanType, chanID, userID string, data map[string]interface{}) (*Channel, error)
- func (c *Client) CreateChannelType(chType *ChannelType) (*ChannelType, error)
- func (c *Client) CreateCommand(cmd *Command) (*Command, error)
- func (c *Client) CreateToken(userID string, expire time.Time) (string, error)
- func (c *Client) DeactivateUser(targetID string, options map[string]interface{}) error
- func (c *Client) DeleteChannelType(name string) error
- func (c *Client) DeleteCommand(cmdName string) error
- func (c *Client) DeleteDevice(userID, deviceID string) error
- func (c *Client) DeleteMessage(msgID string) error
- func (c *Client) DeleteUser(targetID string, options map[string][]string) error
- func (c *Client) ExportUser(targetID string, options map[string][]string) (user *User, err error)
- func (c *Client) FlagMessage(msgID string) error
- func (c *Client) FlagUser(targetID string, options map[string]interface{}) error
- func (c *Client) GetAppConfig() (*AppConfig, error)
- func (c *Client) GetChannelType(chanType string) (*ChannelType, error)
- func (c *Client) GetCommand(cmdName string) (*Command, error)
- func (c *Client) GetDevices(userID string) (devices []*Device, err error)
- func (c *Client) GetMessage(msgID string) (*Message, error)
- func (c *Client) GetRateLimits(options ...GetRateLimitsOption) (GetRateLimitsResponse, error)
- func (c *Client) ListChannelTypes() (map[string]*ChannelType, error)
- func (c *Client) ListCommands() ([]*Command, error)
- func (c *Client) MarkAllRead(userID string) error
- func (c *Client) MuteUser(targetID, userID string, options map[string]interface{}) error
- func (c *Client) MuteUsers(targetIDs []string, userID string, options map[string]interface{}) error
- func (c *Client) PartialUpdateUser(update PartialUserUpdate) (*User, error)
- func (c *Client) PartialUpdateUsers(updates []PartialUserUpdate) (map[string]*User, error)
- func (c *Client) QueryChannels(q *QueryOption, sort ...*SortOption) ([]*Channel, error)
- func (c *Client) QueryUsers(q *QueryOption, sorters ...*SortOption) ([]*User, error)
- func (c *Client) ReactivateUser(targetID string, options map[string]interface{}) error
- func (c *Client) Search(request SearchRequest) ([]*Message, error)
- func (c *Client) UnBanUser(targetID string, options map[string]string) error
- func (c *Client) UnFlagUser(targetID string, options map[string]interface{}) error
- func (c *Client) UnflagMessage(msgID string) error
- func (c *Client) UnmuteUser(targetID, userID string) error
- func (c *Client) UnmuteUsers(targetIDs []string, userID string) error
- func (c *Client) UpdateAppSettings(settings *AppSettings) error
- func (c *Client) UpdateChannelType(name string, options map[string]interface{}) error
- func (c *Client) UpdateCommand(cmdName string, options map[string]interface{}) (*Command, error)
- func (c *Client) UpdateMessage(msg *Message, msgID string) (*Message, error)
- func (c *Client) UpdateUser(user *User) (*User, error)deprecated
- func (c *Client) UpdateUsers(users ...*User) (map[string]*User, error)deprecated
- func (c *Client) UpsertUser(user *User) (*User, error)
- func (c *Client) UpsertUsers(users ...*User) (map[string]*User, error)
- func (c *Client) VerifyWebhook(body, signature []byte) (valid bool)
- type Command
- type Device
- type Event
- type EventType
- type FirebaseConfig
- type GetRateLimitsOption
- type GetRateLimitsResponse
- type ImportChannelMessagesResponse
- type Message
- type MessageType
- type Mute
- type PartialUpdate
- type PartialUserUpdate
- type Permission
- type Policy
- type PushNotificationFields
- type QueryOption
- type RateLimitInfo
- type RateLimitsMap
- type Reaction
- type SearchRequest
- type SendFileRequest
- type SendMessageOption
- type SortOption
- type User
Examples ¶
- Channel.AddModerators
- Channel.SendReaction
- Channel.Update
- Client.AddDevice
- Client.BanUser
- Client.CreateChannelType
- Client.CreateCommand
- Client.DeactivateUser
- Client.DeleteChannelType
- Client.DeleteCommand
- Client.DeleteDevice
- Client.DeleteUser
- Client.DeleteUser (Hard)
- Client.ExportUser
- Client.GetChannelType
- Client.GetCommand
- Client.ListChannelTypes
- Client.ListCommands
- Client.ReactivateUser
- Client.UpdateAppSettings (Disable_auth)
- Client.UpdateAppSettings (Disable_permission)
- Client.UpdateChannelType
- Client.UpdateChannelType (Bool)
- Client.UpdateChannelType (Other)
- Client.UpdateChannelType (Permissions)
- Client.UpdateCommand
- Client.UpsertUser
Constants ¶
const ( AutoModDisabled modType = "disabled" AutoModSimple modType = "simple" AutoModAI modType = "AI" ModBehaviourFlag modBehaviour = "flag" ModBehaviourBlock modBehaviour = "block" MessageRetentionForever = "infinite" )
const ( PushProviderAPNS = pushProvider("apn") PushProviderFirebase = pushProvider("firebase") )
Variables ¶
var DefaultChannelConfig = ChannelConfig{ Automod: AutoModDisabled, ModBehavior: ModBehaviourFlag, MaxMessageLength: defaultMessageLength, MessageRetention: MessageRetentionForever, }
DefaultChannelConfig is the default channel configuration.
Functions ¶
func MessageSkipPush ¶ added in v3.4.0
func MessageSkipPush(r *messageRequest)
MessageSkipPush is a flag that be given to SendMessage if you don't want to generate any push notifications.
Types ¶
type APNConfig ¶
type APNConfig struct { Enabled bool `json:"enabled"` Development bool `json:"development"` AuthType string `json:"auth_type,omitempty"` AuthKey []byte `json:"auth_key,omitempty"` NotificationTemplate string `json:"notification_template"` Host string `json:"host,omitempty"` BundleID string `json:"bundle_id,omitempty"` TeamID string `json:"team_id,omitempty"` KeyID string `json:"key_id,omitempty"` }
type AppConfig ¶
type AppConfig struct { Name string `json:"name"` OrganizationName string `json:"organization"` WebhookURL string `json:"webhook_url"` SuspendedExplanation string `json:"suspended_explanation"` PushNotifications PushNotificationFields `json:"push_notifications"` ConfigNameMap map[string]*ChannelConfig `json:"channel_configs"` Policies map[string][]Policy `json:"policies"` Suspended bool `json:"suspended"` DisableAuth bool `json:"disable_auth_checks"` DisablePermissions bool `json:"disable_permissions_checks"` MultiTenantEnabled bool `json:"multi_tenant_enabled"` }
type AppSettings ¶
type AppSettings struct { DisableAuth *bool `json:"disable_auth_checks,omitempty"` DisablePermissions *bool `json:"disable_permissions_checks,omitempty"` APNConfig *APNConfig `json:"apn_config,omitempty"` FirebaseConfig *FirebaseConfig `json:"firebase_config,omitempty"` WebhookURL *string `json:"webhook_url,omitempty"` MultiTenantEnabled *bool `json:"multi_tenant_enabled,omitempty"` }
func NewAppSettings ¶
func NewAppSettings() *AppSettings
func (*AppSettings) SetAPNConfig ¶
func (a *AppSettings) SetAPNConfig(c APNConfig) *AppSettings
func (*AppSettings) SetDisableAuth ¶
func (a *AppSettings) SetDisableAuth(b bool) *AppSettings
func (*AppSettings) SetDisablePermissions ¶
func (a *AppSettings) SetDisablePermissions(b bool) *AppSettings
func (*AppSettings) SetFirebaseConfig ¶
func (a *AppSettings) SetFirebaseConfig(c FirebaseConfig) *AppSettings
func (*AppSettings) SetMultiTenant ¶ added in v3.2.0
func (a *AppSettings) SetMultiTenant(b bool) *AppSettings
func (*AppSettings) SetWebhookURL ¶
func (a *AppSettings) SetWebhookURL(s string) *AppSettings
type Attachment ¶
type Attachment struct { Type string `json:"type,omitempty"` // text, image, audio, video AuthorName string `json:"author_name,omitempty"` Title string `json:"title,omitempty"` TitleLink string `json:"title_link,omitempty"` Text string `json:"text,omitempty"` ImageURL string `json:"image_url,omitempty"` ThumbURL string `json:"thumb_url,omitempty"` AssetURL string `json:"asset_url,omitempty"` OGScrapeURL string `json:"og_scrape_url,omitempty"` ExtraData map[string]interface{} `json:"-"` }
func (Attachment) MarshalJSON ¶
func (a Attachment) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (*Attachment) UnmarshalJSON ¶
func (a *Attachment) UnmarshalJSON(data []byte) error
UnmarshalJSON implements json.Unmarshaler.
type Channel ¶
type Channel struct { ID string `json:"id"` Type string `json:"type"` CID string `json:"cid"` // full id in format channel_type:channel_ID Team string `json:"team"` Config ChannelConfig `json:"config"` CreatedBy *User `json:"created_by"` Frozen bool `json:"frozen"` MemberCount int `json:"member_count"` Members []*ChannelMember `json:"members"` Messages []*Message `json:"messages"` Read []*ChannelRead `json:"read"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` LastMessageAt time.Time `json:"last_message_at"` ExtraData map[string]interface{} `json:"-"` // contains filtered or unexported fields }
func (*Channel) AcceptInvite ¶
func (*Channel) AddMembers ¶
AddMembers adds members with given user IDs to the channel.
func (*Channel) AddModerators ¶
AddModerators adds moderators with given IDs to the channel.
Example ¶
See https://getstream.io/chat/docs/channel_members/ for more details.
channel := &Channel{} newModerators := []string{"bob", "sue"} _ = channel.AddModerators("thierry", "josh") _ = channel.AddModerators(newModerators...) _ = channel.DemoteModerators(newModerators...)
Output:
func (*Channel) AddModeratorsWithMessage ¶
AddModerators adds moderators with given IDs to the channel and produce system message.
func (*Channel) BanUser ¶
BanUser bans target user ID from this channel userID: user who bans target. options: additional ban options, ie {"timeout": 3600, "reason": "offensive language is not allowed here"}.
func (*Channel) DeleteFile ¶
DeleteFile removes uploaded file.
func (*Channel) DeleteImage ¶
DeleteImage removes uploaded image.
func (*Channel) DeleteReaction ¶
DeleteReaction removes a reaction from message with given ID.
func (*Channel) DemoteModerators ¶
DemoteModerators moderators with given IDs from the channel.
func (*Channel) DemoteModeratorsWithMessage ¶
DemoteModerators moderators with given IDs from the channel and produce system message.
func (*Channel) GetReactions ¶
GetReactions returns list of the reactions for message with given ID. options: Pagination params, ie {"limit":{"10"}, "idlte": {"10"}}
func (*Channel) GetReplies ¶
GetReplies returns list of the message replies for a parent message. options: Pagination params, ie {limit:10, idlte: 10}
func (*Channel) HideWithHistoryClear ¶
HideWithHistoryClear clear marks channel as hidden and remove all messages for user.
func (*Channel) ImportMessages ¶
func (ch *Channel) ImportMessages(messages ...*Message) (*ImportChannelMessagesResponse, error)
ImportMessages is a batch endpoint for inserting multiple messages.
func (*Channel) InviteMembers ¶
InviteMembers invites users with given IDs to the channel.
func (*Channel) InviteMembersWithMessage ¶
InviteMembers invites users with given IDs to the channel and produce system message.
func (*Channel) MarkRead ¶
MarkRead send the mark read event for user with given ID, only works if the `read_events` setting is enabled. options: additional data, ie {"messageID": last_messageID}
func (Channel) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (*Channel) PartialUpdate ¶ added in v3.1.0
func (ch *Channel) PartialUpdate(update PartialUpdate) error
PartialUpdate set and unset specific fields when it is necessary to retain additional custom data fields on the object. AKA a patch style update.
options: the object to update the custom properties of the channel
func (*Channel) QueryMembers ¶
func (ch *Channel) QueryMembers(q *QueryOption, sorters ...*SortOption) ([]*ChannelMember, error)
QueryMembers queries members of a channel.
func (*Channel) RejectInvite ¶
func (*Channel) RemoveMembers ¶
RemoveMembers deletes members with given IDs from the channel.
func (*Channel) SendAction ¶
SendAction for a message.
func (*Channel) SendFile ¶
func (ch *Channel) SendFile(request SendFileRequest) (string, error)
SendFile sends file to the channel. Returns file url or error.
func (*Channel) SendImage ¶
func (ch *Channel) SendImage(request SendFileRequest) (string, error)
SendFile sends image to the channel. Returns file url or error.
func (*Channel) SendMessage ¶
func (ch *Channel) SendMessage(message *Message, userID string, options ...SendMessageOption) (*Message, error)
SendMessage sends a message to the channel. Returns full message details from server.
func (*Channel) SendReaction ¶
SendReaction sends a reaction to message with given ID.
Example ¶
channel := &Channel{} msgID := "123" userID := "bob-1" reaction := &Reaction{ Type: "love", ExtraData: map[string]interface{}{"my_custom_field": 123}, } _, err := channel.SendReaction(reaction, msgID, userID) if err != nil { log.Fatalf("Found Error: %v", err) }
Output:
func (*Channel) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
func (*Channel) Update ¶
Update edits the channel's custom properties.
options: the object to update the custom properties of this channel with message: optional update message
Example ¶
// https://getstream.io/chat/docs/channel_permissions/?language=python client := &Client{} data := map[string]interface{}{ "image": "https://path/to/image", "created_by": "elon", "roles": map[string]string{"elon": "admin", "gwynne": "moderator"}, } spacexChannel := client.Channel("team", "spacex") if err := spacexChannel.Update(data, nil); err != nil { log.Fatalf("Error: %v", err) }
Output:
type ChannelConfig ¶
type ChannelConfig struct { Name string `json:"name"` // features // show typing indicators or not (probably auto disable if more than X users in a channel) TypingEvents bool `json:"typing_events"` // store who has read the message, or at least when they last viewed the chat ReadEvents bool `json:"read_events"` // connect events can get very noisy for larger chat groups ConnectEvents bool `json:"connect_events"` // make messages searchable Search bool `json:"search"` Reactions bool `json:"reactions"` Replies bool `json:"replies"` Mutes bool `json:"mutes"` // number of days to keep messages, must be MessageRetentionForever or numeric string MessageRetention string `json:"message_retention"` MaxMessageLength int `json:"max_message_length"` Automod modType `json:"automod"` // disabled, simple or AI ModBehavior modBehaviour `json:"automod_behavior"` }
ChannelConfig is the configuration for a channel.
type ChannelMember ¶
type ChannelMember struct { UserID string `json:"user_id,omitempty"` User *User `json:"user,omitempty"` IsModerator bool `json:"is_moderator,omitempty"` Invited bool `json:"invited,omitempty"` InviteAcceptedAt *time.Time `json:"invite_accepted_at,omitempty"` InviteRejectedAt *time.Time `json:"invite_rejected_at,omitempty"` Role string `json:"role,omitempty"` CreatedAt time.Time `json:"created_at,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` }
type ChannelMute ¶
type ChannelMute struct { User User `json:"user"` Channel Channel `json:"channel"` Expires *time.Time `json:"expires"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` }
ChannelMute represents a channel mute.
type ChannelMuteResponse ¶
type ChannelMuteResponse struct {
ChannelMute ChannelMute `json:"channel_mute"`
}
type ChannelRead ¶
type ChannelType ¶
type ChannelType struct { ChannelConfig Commands []*Command `json:"commands"` Permissions []*Permission `json:"permissions"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` }
func NewChannelType ¶
func NewChannelType(name string) *ChannelType
NewChannelType returns initialized ChannelType with default values.
type Client ¶
type Client struct { BaseURL string HTTP *http.Client `json:"-"` // contains filtered or unexported fields }
func (*Client) AddDevice ¶
AddDevice adds new device.
Example ¶
client, _ := NewClient("XXXX", "XXXX") _ = client.AddDevice(&Device{ ID: "2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207", UserID: "elon", PushProvider: PushProviderAPNS, })
Output:
func (*Client) BanUser ¶
Example ¶
client, _ := NewClient("XXXX", "XXXX") // ban a user for 60 minutes from all channel _ = client.BanUser("eviluser", "modUser", map[string]interface{}{"timeout": 60, "reason": "Banned for one hour"}) // ban a user from the livestream:fortnite channel channel := client.Channel("livestream", "fortnite") _ = channel.BanUser("eviluser", "modUser", map[string]interface{}{"reason": "Profanity is not allowed here"}) // remove ban from channel channel = client.Channel("livestream", "fortnite") _ = channel.UnBanUser("eviluser", nil) // remove global ban _ = client.UnBanUser("eviluser", nil)
Output:
func (*Client) Channel ¶
Channel prepares a Channel object for future API calls. This does not in and of itself call the API.
func (*Client) CreateChannel ¶
func (c *Client) CreateChannel(chanType, chanID, userID string, data map[string]interface{}) (*Channel, error)
CreateChannel creates new channel of given type and id or returns already created one.
func (*Client) CreateChannelType ¶
func (c *Client) CreateChannelType(chType *ChannelType) (*ChannelType, error)
CreateChannelType adds new channel type.
Example ¶
See https://getstream.io/chat/docs/channel_features/ for more details.
client := &Client{} newChannelType := &ChannelType{ // Copy the default settings. ChannelConfig: DefaultChannelConfig, } newChannelType.Name = "public" newChannelType.Mutes = false newChannelType.Reactions = false newChannelType.Permissions = append(newChannelType.Permissions, &Permission{ Name: "Allow reads for all", Priority: 999, Resources: []string{"ReadChannel", "CreateMessage"}, Action: "Allow", }, &Permission{ Name: "Deny all", Priority: 1, Resources: []string{"*"}, Action: "Deny", }, ) _, _ = client.CreateChannelType(newChannelType)
Output:
func (*Client) CreateCommand ¶
CreateCommand registers a new custom command.
Example ¶
See https://getstream.io/chat/docs/custom_commands/ for more details.
client := &Client{} newCommand := &Command{ Name: "my-command", Description: "my command", Args: "[@username]", Set: "custom_cmd_set", } _, _ = client.CreateCommand(newCommand)
Output:
func (*Client) CreateToken ¶
CreateToken creates a new token for user with optional expire time. Zero time is assumed to be no expire.
func (*Client) DeactivateUser ¶
Example ¶
client, _ := NewClient("XXXX", "XXXX") _ = client.DeactivateUser("userID", nil)
Output:
func (*Client) DeleteChannelType ¶
Example ¶
client := &Client{} _ = client.DeleteChannelType("public")
Output:
func (*Client) DeleteCommand ¶
DeleteCommand deletes a custom command referenced by cmdName.
Example ¶
client := &Client{} _ = client.DeleteCommand("my-command")
Output:
func (*Client) DeleteDevice ¶
DeleteDevice deletes a device from the user.
Example ¶
client, _ := NewClient("XXXX", "XXXX") deviceID := "2ffca4ad6599adc9b5202d15a5286d33c19547d472cd09de44219cda5ac30207" userID := "elon" _ = client.DeleteDevice(userID, deviceID)
Output:
func (*Client) DeleteMessage ¶
func (*Client) DeleteUser ¶
Example ¶
client, _ := NewClient("XXXX", "XXXX") _ = client.DeleteUser("userID", nil)
Output:
Example (Hard) ¶
client, _ := NewClient("XXXX", "XXXX") options := map[string][]string{ "mark_messages_deleted": {"true"}, "hard_delete": {"true"}, } _ = client.DeleteUser("userID", options)
Output:
func (*Client) ExportUser ¶
Example ¶
client, _ := NewClient("XXXX", "XXXX") user, _ := client.ExportUser("userID", nil) log.Printf("%#v", user)
Output:
func (*Client) FlagMessage ¶
func (*Client) GetAppConfig ¶
GetAppConfig returns app settings.
func (*Client) GetChannelType ¶
func (c *Client) GetChannelType(chanType string) (*ChannelType, error)
GetChannelType returns information about channel type.
Example ¶
client := &Client{} _, _ = client.GetChannelType("public")
Output:
func (*Client) GetCommand ¶
GetCommand retrieves a custom command referenced by cmdName.
Example ¶
client := &Client{} _, _ = client.GetCommand("my-command")
Output:
func (*Client) GetDevices ¶
GetDevices retrieves the list of devices for user.
func (*Client) GetMessage ¶
GetMessage returns message by ID.
func (*Client) GetRateLimits ¶ added in v3.5.0
func (c *Client) GetRateLimits(options ...GetRateLimitsOption) (GetRateLimitsResponse, error)
GetRateLimits returns the current rate limit quotas and usage. If no options are passed, all the limits for all platforms are returned.
func (*Client) ListChannelTypes ¶
func (c *Client) ListChannelTypes() (map[string]*ChannelType, error)
ListChannelTypes returns all channel types.
Example ¶
client := &Client{} _, _ = client.ListChannelTypes()
Output:
func (*Client) ListCommands ¶
ListCommands returns a list of custom commands.
Example ¶
client := &Client{} _, _ = client.ListCommands()
Output:
func (*Client) MarkAllRead ¶
MarkAllRead marks all messages as read for userID.
func (*Client) MuteUser ¶
MuteUser creates a mute. targetID: the user getting muted. userID: the user is muting the target.
func (*Client) MuteUsers ¶
MuteUsers creates mutes for multiple users. targetIDs: the users getting muted. userID: the user is muting the target.
func (*Client) PartialUpdateUser ¶
func (c *Client) PartialUpdateUser(update PartialUserUpdate) (*User, error)
PartialUpdateUser makes partial update for single user.
func (*Client) PartialUpdateUsers ¶
func (c *Client) PartialUpdateUsers(updates []PartialUserUpdate) (map[string]*User, error)
PartialUpdateUsers makes partial update for users.
func (*Client) QueryChannels ¶
func (c *Client) QueryChannels(q *QueryOption, sort ...*SortOption) ([]*Channel, error)
QueryChannels returns list of channels with members and messages, that match QueryOption. If any number of SortOption are set, result will be sorted by field and direction in oder of sort options.
func (*Client) QueryUsers ¶
func (c *Client) QueryUsers(q *QueryOption, sorters ...*SortOption) ([]*User, error)
QueryUsers returns list of users that match QueryOption. If any number of SortOption are set, result will be sorted by field and direction in the order of sort options.
func (*Client) ReactivateUser ¶
Example ¶
client, _ := NewClient("XXXX", "XXXX") _ = client.ReactivateUser("userID", nil)
Output:
func (*Client) Search ¶
func (c *Client) Search(request SearchRequest) ([]*Message, error)
Search returns channels matching for given keyword.
func (*Client) UnFlagUser ¶
func (*Client) UnflagMessage ¶
func (*Client) UnmuteUser ¶
UnmuteUser removes a mute. targetID: the user is getting un-muted. userID: the user is muting the target.
func (*Client) UnmuteUsers ¶
UnmuteUsers removes a mute. targetID: the users are getting un-muted. userID: the user is muting the target.
func (*Client) UpdateAppSettings ¶
func (c *Client) UpdateAppSettings(settings *AppSettings) error
UpdateAppSettings makes request to update app settings Example of usage:
settings := NewAppSettings().SetDisableAuth(true) err := client.UpdateAppSettings(settings)
Example (Disable_auth) ¶
See https://getstream.io/chat/docs/app_settings_auth/ for more details.
client, err := NewClient("XXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") if err != nil { log.Fatalf("Err: %v", err) } // disable auth checks, allows dev token usage settings := NewAppSettings().SetDisableAuth(true) err = client.UpdateAppSettings(settings) if err != nil { log.Fatalf("Err: %v", err) } // re-enable auth checks err = client.UpdateAppSettings(NewAppSettings().SetDisableAuth(false)) if err != nil { log.Fatalf("Err: %v", err) }
Output:
Example (Disable_permission) ¶
client, err := NewClient("XXXX", "XXXX") if err != nil { log.Fatalf("Err: %v", err) } // disable permission checkse settings := NewAppSettings().SetDisablePermissions(true) err = client.UpdateAppSettings(settings) if err != nil { log.Fatalf("Err: %v", err) } // re-enable permission checks err = client.UpdateAppSettings(NewAppSettings().SetDisablePermissions(false)) if err != nil { log.Fatalf("Err: %v", err) }
Output:
func (*Client) UpdateChannelType ¶
Example ¶
client := &Client{} _ = client.UpdateChannelType("public", map[string]interface{}{ "permissions": []map[string]interface{}{ { "name": "Allow reads for all", "priority": 999, "resources": []string{"ReadChannel", "CreateMessage"}, "role": "*", "action": "Allow", }, { "name": "Deny all", "priority": 1, "resources": []string{"*"}, "role": "*", "action": "Deny", }, }, "replies": false, "commands": []string{"all"}, })
Output:
Example (Bool) ¶
client := &Client{} _ = client.UpdateChannelType("public", map[string]interface{}{ "typing_events": false, "read_events": true, "connect_events": true, "search": false, "reactions": true, "replies": false, "mutes": true, })
Output:
Example (Other) ¶
client := &Client{} _ = client.UpdateChannelType( "public", map[string]interface{}{ "automod": "disabled", "message_retention": "7", "max_message_length": 140, "commands": []interface{}{"ban", "unban"}, }, )
Output:
Example (Permissions) ¶
client := &Client{} _ = client.UpdateChannelType( "public", map[string]interface{}{ "permissions": []map[string]interface{}{ { "name": "Allow reads for all", "priority": 999, "resources": []string{"ReadChannel", "CreateMessage"}, "role": "*", "action": "Allow", }, { "name": "Deny all", "priority": 1, "resources": []string{"*"}, "action": "Deny", }, }, }, )
Output:
func (*Client) UpdateCommand ¶
UpdateCommand updates a custom command referenced by cmdName.
Example ¶
client := &Client{} _, _ = client.UpdateCommand("my-command", map[string]interface{}{ "description": "updated description", })
Output:
func (*Client) UpdateMessage ¶
UpdateMessage updates message with given msgID.
func (*Client) UpdateUser
deprecated
func (*Client) UpsertUser ¶ added in v3.3.0
UpsertUser is a single user version of UpsertUsers for convenience.
Example ¶
client, _ := NewClient("XXXX", "XXXX") _, err := client.UpsertUser(&User{ ID: "tommaso", Name: "Tommaso", Role: "Admin", }) if err != nil { log.Fatalf("Err: %v", err) }
Output:
func (*Client) UpsertUsers ¶ added in v3.3.0
UpsertUsers creates the given users. If a user doesn't exist, it will be created. Otherwise, custom data will be extended or updated. Missing data is never removed.
func (*Client) VerifyWebhook ¶
VerifyWebhook validates if hmac signature is correct for message body.
type Command ¶
type Command struct { Name string `json:"name"` Description string `json:"description"` Args string `json:"args"` Set string `json:"set"` }
Command represents a custom command.
type Event ¶
type Event struct { CID string `json:"cid,omitempty"` // Channel ID Type EventType `json:"type"` // Event type, one of Event* constants Message *Message `json:"message,omitempty"` Reaction *Reaction `json:"reaction,omitempty"` Channel *Channel `json:"channel,omitempty"` Member *ChannelMember `json:"member,omitempty"` Members []*ChannelMember `json:"members,omitempty"` User *User `json:"user,omitempty"` UserID string `json:"user_id,omitempty"` OwnUser *User `json:"me,omitempty"` WatcherCount int `json:"watcher_count,omitempty"` ExtraData map[string]interface{} `json:"-"` CreatedAt time.Time `json:"created_at,omitempty"` }
Event is received from a webhook, or sent with the SendEvent function.
func (Event) MarshalJSON ¶
func (*Event) UnmarshalJSON ¶
type EventType ¶
type EventType string
EventType marks which of the various sub-types of a webhook event you are receiving or sending.
const ( // EventMessageNew is fired when a new message is added. EventMessageNew EventType = "message.new" // EventMessageUpdated is fired when a message is updated. EventMessageUpdated EventType = "message.updated" // EventMessageDeleted is fired when a message is deleted. EventMessageDeleted EventType = "message.deleted" // EventMessageRead is fired when a user calls mark as read. EventMessageRead EventType = "message.read" // EventReactionNew is fired when a message reaction is added. EventReactionNew EventType = "reaction.new" // EventReactionDeleted is fired when a message reaction deleted. EventReactionDeleted EventType = "reaction.deleted" // EventMemberAdded is fired when a member is added to a channel. EventMemberAdded EventType = "member.added" // EventMemberUpdated is fired when a member is updated. EventMemberUpdated EventType = "member.updated" // EventMemberRemoved is fired when a member is removed from a channel. EventMemberRemoved EventType = "member.removed" // EventChannelUpdated is fired when a channel is updated. EventChannelUpdated EventType = "channel.updated" // EventChannelDeleted is fired when a channel is deleted. EventChannelDeleted EventType = "channel.deleted" // EventChannelTruncated is fired when a channel is truncated. EventChannelTruncated EventType = "channel.truncated" // EventHealthCheck is fired when a user is updated. EventHealthCheck EventType = "health.check" // EventNotificationNewMessage and family are fired when a notification is // created, marked read, invited to a channel, and so on. EventNotificationNewMessage EventType = "notification.message_new" EventNotificationMarkRead EventType = "notification.mark_read" EventNotificationInvited EventType = "notification.invited" EventNotificationInviteAccepted EventType = "notification.invite_accepted" EventNotificationAddedToChannel EventType = "notification.added_to_channel" EventNotificationRemovedFromChannel EventType = "notification.removed_from_channel" EventNotificationMutesUpdated EventType = "notification.mutes_updated" // EventTypingStart and EventTypingStop are fired when a user starts or stops typing. EventTypingStart EventType = "typing.start" EventTypingStop EventType = "typing.stop" // EventUserMuted is fired when a user is muted. EventUserMuted EventType = "user.muted" // EventUserUnmuted is fired when a user is unmuted. EventUserUnmuted EventType = "user.unmuted" EventUserPresenceChanged EventType = "user.presence.changed" EventUserWatchingStart EventType = "user.watching.start" EventUserWatchingStop EventType = "user.watching.stop" EventUserUpdated EventType = "user.updated" )
type FirebaseConfig ¶
type GetRateLimitsOption ¶ added in v3.5.0
type GetRateLimitsOption func(p *getRateLimitsParams)
GetRateLimitsOption configures the Client.GetRateLimits call.
func WithAndroid ¶ added in v3.5.0
func WithAndroid() GetRateLimitsOption
WithAndroid restricts the returned limits to Android clients only.
func WithEndpoints ¶ added in v3.5.0
func WithEndpoints(endpoints ...string) GetRateLimitsOption
WithEndpoints restricts the returned limits info to the specified endpoints.
func WithIOS ¶ added in v3.5.0
func WithIOS() GetRateLimitsOption
WithIOS restricts the returned limits to iOS clients only.
func WithServerSide ¶ added in v3.5.0
func WithServerSide() GetRateLimitsOption
WithServerSide restricts the returned limits to server-side clients only.
func WithWeb ¶ added in v3.5.0
func WithWeb() GetRateLimitsOption
WithWeb restricts the returned limits to web clients only.
type GetRateLimitsResponse ¶ added in v3.5.0
type GetRateLimitsResponse struct { ServerSide RateLimitsMap `json:"server_side,omitempty"` Android RateLimitsMap `json:"android,omitempty"` IOS RateLimitsMap `json:"ios,omitempty"` Web RateLimitsMap `json:"web,omitempty"` }
GetRateLimitsResponse is the response of the Client.GetRateLimits call. It includes, if present, the rate limits for the supported platforms, namely server-side, Android, iOS, and web.
type ImportChannelMessagesResponse ¶
type ImportChannelMessagesResponse struct {
Messages []Message `json:"messages"`
}
type Message ¶
type Message struct { ID string `json:"id"` Text string `json:"text"` HTML string `json:"html"` Type MessageType `json:"type,omitempty"` // one of MessageType* constants Silent bool `json:"silent,omitempty"` User *User `json:"user"` Attachments []*Attachment `json:"attachments"` LatestReactions []*Reaction `json:"latest_reactions"` // last reactions OwnReactions []*Reaction `json:"own_reactions"` ReactionCounts map[string]int `json:"reaction_counts"` ParentID string `json:"parent_id"` // id of parent message if it's reply ShowInChannel bool `json:"show_in_channel"` // show reply message also in channel ReplyCount int `json:"reply_count,omitempty"` MentionedUsers []*User `json:"mentioned_users"` CreatedAt *time.Time `json:"created_at,omitempty"` UpdatedAt *time.Time `json:"updated_at,omitempty"` DeletedAt *time.Time `json:"deleted_at,omitempty"` ExtraData map[string]interface{} `json:"-"` }
func (Message) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (*Message) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
type MessageType ¶
type MessageType string
const ( MessageTypeRegular MessageType = "regular" MessageTypeError MessageType = "error" MessageTypeReply MessageType = "reply" MessageTypeSystem MessageType = "system" MessageTypeEphemeral MessageType = "ephemeral" )
type Mute ¶
type Mute struct { User User `json:"user"` Target User `json:"target"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Expires *time.Time `json:"expires"` }
Mute represents a user mute.
type PartialUpdate ¶ added in v3.1.0
type PartialUserUpdate ¶
type PartialUserUpdate struct { ID string `json:"id"` // User ID, required Set map[string]interface{} `json:"set,omitempty"` // map of field.name => value; optional Unset []string `json:"unset,omitempty"` // list of field names to unset }
PartialUserUpdate request; Set and Unset fields can be set at same time, but should not be same field, for example you cannot set 'field.path.name' and unset 'field.path' at the same time. Field path should not contain spaces or dots (dot is path separator).
type Permission ¶
type Policy ¶
type Policy struct { Name string `json:"name"` Resources []string `json:"resources"` Roles []string `json:"roles"` Action int `json:"action"` // allow: 1, deny: 0 Owner bool `json:"owner"` Priority int `json:"priority"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` }
type PushNotificationFields ¶
type PushNotificationFields struct { APNConfig APNConfig `json:"apn"` FirebaseConfig FirebaseConfig `json:"firebase"` }
type QueryOption ¶
type QueryOption struct { // https://getstream.io/chat/docs/#query_syntax Filter map[string]interface{} `json:"filter_conditions,omitempty"` Sort []*SortOption `json:"sort,omitempty"` UserID string `json:"user_id,omitempty"` Limit int `json:"limit,omitempty"` // pagination option: limit number of results Offset int `json:"offset,omitempty"` // pagination option: offset to return items from MessageLimit *int `json:"message_limit,omitempty"` MemberLimit *int `json:"member_limit,omitempty"` }
type RateLimitInfo ¶ added in v3.5.0
type RateLimitInfo struct { // Limit is the maximum number of API calls for a single time window (1 minute). Limit int64 `json:"limit"` // Remaining is the number of API calls remaining in the current time window (1 minute). Remaining int64 `json:"remaining"` // Reset is the Unix timestamp of the expiration of the current rate limit time window. Reset int64 `json:"reset"` }
RateLimitInfo represents the quota and usage for a single endpoint.
func (RateLimitInfo) ResetTime ¶ added in v3.5.0
func (i RateLimitInfo) ResetTime() time.Time
ResetTime is a simple helper to get the time.Time representation of the Reset field of the given limit window.
type RateLimitsMap ¶ added in v3.5.0
type RateLimitsMap map[string]RateLimitInfo
RateLimitsMap holds the rate limit information, where the keys are the names of the endpoints and the values are the related RateLimitInfo containing the quota, usage, and reset data.
type Reaction ¶
type Reaction struct { MessageID string `json:"message_id"` UserID string `json:"user_id"` Type string `json:"type"` // any other fields the user wants to attach a reaction ExtraData map[string]interface{} `json:"-"` }
func (Reaction) MarshalJSON ¶
func (*Reaction) UnmarshalJSON ¶
type SearchRequest ¶
type SendFileRequest ¶
type SendMessageOption ¶ added in v3.4.0
type SendMessageOption func(*messageRequest)
SendMessageOption is an option that modifies behavior of send message request.
type SortOption ¶
type User ¶
type User struct { ID string `json:"id"` Name string `json:"name,omitempty"` Image string `json:"image,omitempty"` Role string `json:"role,omitempty"` Teams []string `json:"teams,omitempty"` Online bool `json:"online,omitempty"` Invisible bool `json:"invisible,omitempty"` CreatedAt *time.Time `json:"created_at,omitempty"` UpdatedAt *time.Time `json:"updated_at,omitempty"` LastActive *time.Time `json:"last_active,omitempty"` Mutes []*Mute `json:"mutes,omitempty"` ChannelMutes []*ChannelMute `json:"channel_mutes,omitempty"` ExtraData map[string]interface{} `json:"-"` }
func (User) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (*User) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.