| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- // Copyright (c) 2023 Tulir Asokan
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this
- // file, You can obtain one at http://mozilla.org/MPL/2.0/.
- package types
- import (
- "bytes"
- "encoding/json"
- "fmt"
- "time"
- "go.mau.fi/util/jsontime"
- "go.mau.fi/whatsmeow/proto/waE2E"
- )
- type NewsletterVerificationState string
- func (nvs *NewsletterVerificationState) UnmarshalText(text []byte) error {
- *nvs = NewsletterVerificationState(bytes.ToLower(text))
- return nil
- }
- const (
- NewsletterVerificationStateVerified NewsletterVerificationState = "verified"
- NewsletterVerificationStateUnverified NewsletterVerificationState = "unverified"
- )
- type NewsletterPrivacy string
- func (np *NewsletterPrivacy) UnmarshalText(text []byte) error {
- *np = NewsletterPrivacy(bytes.ToLower(text))
- return nil
- }
- const (
- NewsletterPrivacyPrivate NewsletterPrivacy = "private"
- NewsletterPrivacyPublic NewsletterPrivacy = "public"
- )
- type NewsletterReactionsMode string
- const (
- NewsletterReactionsModeAll NewsletterReactionsMode = "all"
- NewsletterReactionsModeBasic NewsletterReactionsMode = "basic"
- NewsletterReactionsModeNone NewsletterReactionsMode = "none"
- NewsletterReactionsModeBlocklist NewsletterReactionsMode = "blocklist"
- )
- type NewsletterState string
- func (ns *NewsletterState) UnmarshalText(text []byte) error {
- *ns = NewsletterState(bytes.ToLower(text))
- return nil
- }
- const (
- NewsletterStateActive NewsletterState = "active"
- NewsletterStateSuspended NewsletterState = "suspended"
- NewsletterStateGeoSuspended NewsletterState = "geosuspended"
- )
- type NewsletterMuted struct {
- Muted bool
- }
- type WrappedNewsletterState struct {
- Type NewsletterState `json:"type"`
- }
- type NewsletterMuteState string
- func (nms *NewsletterMuteState) UnmarshalText(text []byte) error {
- *nms = NewsletterMuteState(bytes.ToLower(text))
- return nil
- }
- const (
- NewsletterMuteOn NewsletterMuteState = "on"
- NewsletterMuteOff NewsletterMuteState = "off"
- )
- type NewsletterRole string
- func (nr *NewsletterRole) UnmarshalText(text []byte) error {
- *nr = NewsletterRole(bytes.ToLower(text))
- return nil
- }
- const (
- NewsletterRoleSubscriber NewsletterRole = "subscriber"
- NewsletterRoleGuest NewsletterRole = "guest"
- NewsletterRoleAdmin NewsletterRole = "admin"
- NewsletterRoleOwner NewsletterRole = "owner"
- )
- type NewsletterMetadata struct {
- ID JID `json:"id"`
- State WrappedNewsletterState `json:"state"`
- ThreadMeta NewsletterThreadMetadata `json:"thread_metadata"`
- ViewerMeta *NewsletterViewerMetadata `json:"viewer_metadata"`
- }
- type NewsletterViewerMetadata struct {
- Mute NewsletterMuteState `json:"mute"`
- Role NewsletterRole `json:"role"`
- }
- type NewsletterKeyType string
- const (
- NewsletterKeyTypeJID NewsletterKeyType = "JID"
- NewsletterKeyTypeInvite NewsletterKeyType = "INVITE"
- )
- type NewsletterReactionSettings struct {
- Value NewsletterReactionsMode `json:"value"`
- }
- type NewsletterSettings struct {
- ReactionCodes NewsletterReactionSettings `json:"reaction_codes"`
- }
- type NewsletterThreadMetadata struct {
- CreationTime jsontime.UnixString `json:"creation_time"`
- InviteCode string `json:"invite"`
- Name NewsletterText `json:"name"`
- Description NewsletterText `json:"description"`
- SubscriberCount int `json:"subscribers_count,string"`
- VerificationState NewsletterVerificationState `json:"verification"`
- Picture *ProfilePictureInfo `json:"picture"`
- Preview ProfilePictureInfo `json:"preview"`
- Settings NewsletterSettings `json:"settings"`
- //NewsletterMuted `json:"-"`
- //PrivacyType NewsletterPrivacy `json:"-"`
- //ReactionsMode NewsletterReactionsMode `json:"-"`
- //State NewsletterState `json:"-"`
- }
- type NewsletterText struct {
- Text string `json:"text"`
- ID string `json:"id"`
- UpdateTime jsontime.UnixMicroString `json:"update_time"`
- }
- type NewsletterMessage struct {
- MessageServerID MessageServerID
- MessageID MessageID
- Type string
- Timestamp time.Time
- ViewsCount int
- ReactionCounts map[string]int
- // This is only present when fetching messages, not in live updates
- Message *waE2E.Message
- }
- type GraphQLErrorExtensions struct {
- ErrorCode int `json:"error_code"`
- IsRetryable bool `json:"is_retryable"`
- Severity string `json:"severity"`
- }
- type GraphQLError struct {
- Extensions GraphQLErrorExtensions `json:"extensions"`
- Message string `json:"message"`
- Path []string `json:"path"`
- }
- func (gqle GraphQLError) Error() string {
- return fmt.Sprintf("%d %s (%s)", gqle.Extensions.ErrorCode, gqle.Message, gqle.Extensions.Severity)
- }
- type GraphQLErrors []GraphQLError
- func (gqles GraphQLErrors) Unwrap() []error {
- errs := make([]error, len(gqles))
- for i, gqle := range gqles {
- errs[i] = gqle
- }
- return errs
- }
- func (gqles GraphQLErrors) Error() string {
- if len(gqles) == 0 {
- return ""
- } else if len(gqles) == 1 {
- return gqles[0].Error()
- } else {
- return fmt.Sprintf("%v (and %d other errors)", gqles[0], len(gqles)-1)
- }
- }
- type GraphQLResponse struct {
- Data json.RawMessage `json:"data"`
- Errors GraphQLErrors `json:"errors"`
- }
|