types

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2022 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package types defines types for the Twitter API v2 object model.

The core types of the object model are Tweet, User, Poll, Media, and Place. Other types are defined for the interior structure of the core objects.

Enumerators for field parameters are generated by the mkenum tool using the field tags on the core types, using the string tags on the fields. When adding, changing, or removing fields on these types, run "go generate" to update the generated code.

Index

Constants

View Source
const (
	Metric_FollowersCount    = "followers_count"     // public
	Metric_FollowingCount    = "following_count"     // public
	Metric_ImpressionCount   = "impression_count"    // non-public, organic, promoted
	Metric_LikeCount         = "like_count"          // public, organic, promoted
	Metric_ListedCount       = "listed_count"        // public
	Metric_QuoteCount        = "quote_count"         // public
	Metric_ReplyCount        = "reply_count"         // public, organic, promoted
	Metric_RetweetCount      = "retweet_count"       // public, organic, promoted
	Metric_TweetCount        = "tweet_count"         // public
	Metric_URLLinkClicks     = "url_link_clicks"     // non-public, organic, promoted
	Metric_UserProfileClicks = "user_profile_clicks" // non-public, organic, promoted
	Metric_ViewCount         = "view_count"          // public, organic, promoted

	// Video view quartile metrics. Non-public, organic, promoted.
	Metric_Playback0Count   = "playback_0_count"
	Metric_Playback25Count  = "playback_25_count"
	Metric_Playback50Count  = "playback_50_count"
	Metric_Playback75Count  = "playback_75_count"
	Metric_Playback100Count = "playback_100_count"
)

Constants for the names of various metrics reported in a Metrics map. The comment beside each constant describes its visibility.

See https://developer.twitter.com/en/docs/twitter-api/metrics

View Source
const DateFormat = time.RFC3339Nano

DateFormat defines the encoding format for timestamps.

Variables

This section is empty.

Functions

This section is empty.

Types

type Annotation

type Annotation struct {
	Span
	Probability    float64 `json:"probability"`
	Type           string  `json:"type"`
	NormalizedText string  `json:"normalized_text"`
}

An Annotation records the location, and type of a programmatic annotation.

type Attachments

type Attachments map[string][]string

Attachments is a map of attachment type keys to string IDs for objects attached to a reply.

type ContextAnnotation

type ContextAnnotation struct {
	Domain *Domain `json:"domain"`
	Entity *Entity `json:"entity"`
}

A ContextAnnotation is a collection of domain and/or entity labels, inferred based on the text of a tweet. Context annotations can yield one or many domains.

type Domain

type Domain struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
}

A Domain is a single domain label associated with a tweet.

See https://developer.twitter.com/en/docs/twitter-api/annotations for a table of defined annotation domains.

type Entities

type Entities struct {
	Annotations []*Annotation `json:"annotations,omitempty"`
	CashTags    []*Tag        `json:"cashtags,omitempty"`
	HashTags    []*Tag        `json:"hashtags,omitempty"`
	Mentions    []*Mention    `json:"mentions,omitempty"`
	URLs        []*URL        `json:"urls,omitempty"`
}

Entities captures annotations and other embedded entities in a text.

type Entity

type Entity struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

An Entity identifies a programmatically-defined entity annotation associated with a particular span of a tweet (see Annotation).

type ErrorDetail

type ErrorDetail struct {
	ClientID     string `json:"client_id,omitempty"` // e.g., "1011011"
	Title        string `json:"title"`               // e.g., "Not Found Error"
	Detail       string `json:"detail"`              // for human consumption
	Parameter    string `json:"parameter"`           // e.g., "pinned_tweet_id"
	Value        string `json:"value"`               // e.g., "12345"
	Reason       string `json:"reason,omitempty"`    // e.g., "client-not-enrolled"
	ResourceType string `json:"resource_type"`       // e.g., "tweet"
	TypeURL      string `json:"type"`                // link to problem definition
}

ErrorDetail describes an error condition reported in an otherwise successful reply from the API, such as missing expansion data.

See https://developer.twitter.com/en/support/twitter-api/error-troubleshooting

type Expansions

type Expansions struct {
	// Return a user object representing the Tweet’s author.
	AuthorID bool `json:"author_id"`

	// Return a Tweet object that this Tweet is referencing (either as a
	// Retweet, Quoted Tweet, or reply).
	ReferencedTweetID bool `json:"referenced_tweets.id"`

	// Return a user object representing the Tweet author this requested Tweet
	// is a reply of.
	InReplyTo bool `json:"in_reply_to_user_id"`

	// Return a media object representing the images, videos, GIFs included in
	// the Tweet.
	MediaKeys bool `json:"attachments.media_keys"`

	// Return a poll object containing metadata for the poll included in the Tweet.
	PollID bool `json:"attachments.poll_ids"`

	// Return a place object containing metadata for the location tagged in the Tweet.
	PlaceID bool `json:"geo.place_id"`

	// Return a user object for the user mentioned in the Tweet.
	MentionUsername bool `json:"entities.mentions.username"`

	// Return a user object for the author of the referenced Tweet.
	ReferencedAuthorID bool `json:"referenced_tweets.id.author_id"`

	// Return a Tweet object representing the Tweet pinned to the top of the
	// user’s profile.
	PinnedTweetID bool `json:"pinned_tweet_id"`

	// Return a user object representing a list's owner.
	OwnerID bool `json:"owner_id"`
}

Expansions represents a set of object field expansions.

func (Expansions) Label

func (Expansions) Label() string

Label returns the parameter tag for optional Expansions fields.

func (*Expansions) Set

func (f *Expansions) Set(name string, value bool) bool

Set sets the selected field of f to value, by its parameter name. It reports whether name is a known parameter of f.

func (Expansions) Values

func (f Expansions) Values() []string

Values returns a slice of the selected field names from f.

type Fields

type Fields interface {
	// Return the parameter label for this field type.
	Label() string

	// Return the values selected for this field type.
	Values() []string
}

Fields defines a set of optional response fields to request. This interface is satisfied by the generated enumeration types.

type List

type List struct {
	ID   string `json:"id" twitter:"default"`
	Name string `json:"name" twitter:"default"`

	CreatedAt   *time.Time `json:"created_at,omitempty"`
	Description string     `json:"description,omitempty"`
	Followers   int        `json:"follower_count,omitempty"`
	Members     int        `json:"member_count,omitempty"`
	OwnerID     string     `json:"owner_id,omitempty"`
	Private     bool       `json:"private,omitempty"`
}

A List is the decoded form of list metadata. The fields marked "default" will always be populated by the API; other fields are filled in based on the parameters in the request.

type ListFields

type ListFields struct {
	CreatedAt   bool // created_at
	Description bool // description
	Followers   bool // follower_count
	Members     bool // member_count
	OwnerID     bool // owner_id
	Private     bool // private
}

ListFields defines optional List field parameters.

func (ListFields) Label

func (ListFields) Label() string

Label returns the parameter tag for optional List fields.

func (*ListFields) Set

func (f *ListFields) Set(name string, value bool) bool

Set sets the selected field of f to value, by its parameter name. It reports whether name is a known parameter of f.

func (ListFields) Values

func (f ListFields) Values() []string

Values returns a slice of the selected field names from f.

type Lists

type Lists []*List

Lists is a searchable slice of List values.

func (Lists) FindByID

func (ls Lists) FindByID(id string) *List

FindByID returns the first List in ls whose ID matches, or nil.

type Location

type Location struct {
	PlaceID     string          `json:"place_id"`
	Coordinates json.RawMessage `json:"coordinates"` // as GeoJSON
}

A Location carries the content of a place ("geo"). The payload is encoded as GeoJSON, see https://geojson.org. It is captured here as raw JSON.

type Media

type Media struct {
	Key  string `json:"media_key" twitter:"default"`
	Type string `json:"type" twitter:"default"` // e.g., "video"

	URL             string       `json:"url"`
	Duration        Milliseconds `json:"duration_ms"`
	Height          int          `json:"height"` // pixels
	Width           int          `json:"width"`  // pixels
	PreviewImageURL string       `json:"preview_image_url"`

	Attachments `json:"attachments"`
	MetricSet
}

Media refers to any image, GIF, or video attached to a tweet. The fields marked "default" will always be populated by the API; other fields are filled in based on the parameters in the request.

type MediaFields

type MediaFields struct {
	Attachments      bool // attachments
	Duration         bool // duration_ms
	Height           bool // height
	NonPublicMetrics bool // non_public_metrics
	OrganicMetrics   bool // organic_metrics
	PreviewImageURL  bool // preview_image_url
	PromotedMetrics  bool // promoted_metrics
	PublicMetrics    bool // public_metrics
	URL              bool // url
	Width            bool // width
}

MediaFields defines optional Media field parameters.

func (MediaFields) Label

func (MediaFields) Label() string

Label returns the parameter tag for optional Media fields.

func (*MediaFields) Set

func (f *MediaFields) Set(name string, value bool) bool

Set sets the selected field of f to value, by its parameter name. It reports whether name is a known parameter of f.

func (MediaFields) Values

func (f MediaFields) Values() []string

Values returns a slice of the selected field names from f.

type Medias

type Medias []*Media

Medias is a searchable slice of Media values.

func (Medias) FindByKey

func (ms Medias) FindByKey(key string) *Media

FindByKey returns the first Media in ms whose Key matches, or nil.

type Mention

type Mention struct {
	Span
	Username string `json:"username"`
}

A Mention denotes a reference to a Twitter username (@user).

type MetricSet

type MetricSet struct {
	// Metric totals that are available for anyone to access on Twitter, such as
	// number of likes and number of retweets.
	PublicMetrics Metrics `json:"public_metrics,omitempty"`

	// Metrics totals that are not available for anyone to view on Twitter, such
	// as number of impressions and video view quartiles.
	// Requires OAuth 1.0a User Context authentication.
	NonPublicMetrics Metrics `json:"non_public_metrics,omitempty" twitter:"user-context"`

	// A grouping of public and non-public metrics attributed to an organic
	// context (posted and viewed in a regular manner).
	// Requires OAuth 1.0a User Context authentication.
	OrganicMetrics Metrics `json:"organic_metrics,omitempty" twitter:"user-context"`

	// A grouping of public and non-public metrics attributed to a promoted
	// context (posted or viewed as part of an Ads campaign).
	// Requires OAuth 1.0a User Context authentication, and that the tweet was
	// promoted in an Ad.
	//
	// Promoted metrics are NOT included in these counts when a Twitter user is
	// using their own Ads account to promote another Twitter user's tweets.
	//
	// Promoted metrics ARE included in these counts when a Twitter user
	// promotes their own Tweets in an Ads account for a specific handle, the
	// admin for that account may add another Twitter user as an account user so
	// this second account user can promote Tweets for the handle.
	PromotedMetrics Metrics `json:"promoted_metrics,omitempty" twitter:"user-context"`
}

A MetricSet collects the metric types that can be requested from the API.

type Metrics

type Metrics map[string]int

Metrics are counter values provided by the API; see MetricSet.

type Milliseconds

type Milliseconds time.Duration

Milliseconds defines the JSON encoding of a duration in milliseconds.

func (Milliseconds) MarshalJSON

func (m Milliseconds) MarshalJSON() ([]byte, error)

MarshalJSON encodes m as a JSON integer number of milliseconds.

func (*Milliseconds) UnmarshalJSON

func (m *Milliseconds) UnmarshalJSON(bits []byte) error

UnmarshalJSON decodes d from a JSON integer number of milliseconds.

type Minutes

type Minutes time.Duration

Minutes defines the JSON encoding of a duration in minutes.

func (Minutes) MarshalJSON

func (m Minutes) MarshalJSON() ([]byte, error)

MarshalJSON encodes d as a JSON integer number of minutes. Time intervals smaller than a minute are rounded toward zero.

func (*Minutes) UnmarshalJSON

func (m *Minutes) UnmarshalJSON(bits []byte) error

UnmarshalJSON decodes d from a JSON integer number of minutes.

type Place

type Place struct {
	ID       string `json:"id" twitter:"default"`
	FullName string `json:"full_name" twitter:"default"` // e.g., "Manhattan, New York"
	Name     string `json:"name"`                        // short name, e.g., "Manhattan"
	Type     string `json:"place_type"`                  // e.g., "city"

	ContainedIn []string        `json:"contained_within"`
	CountryName string          `json:"country"`      // e.g., "United States"
	CountryCode string          `json:"country_code"` // e.g., "US"; https://www.iso.org/obp/ui/#search
	Location    json.RawMessage `json:"geo"`          // in GeoJSON; https://geojson.org/

	Attachments `json:"attachments"`
}

A Place describes a location mentioned in a tweet or user description. The fields marked "default" will always be populated by the API; other fields are filled in based on the parameters in the request.

type PlaceFields

type PlaceFields struct {
	Attachments bool // attachments
	ContainedIn bool // contained_within
	CountryName bool // country
	CountryCode bool // country_code
	Location    bool // geo
	Name        bool // name
	Type        bool // place_type
}

PlaceFields defines optional Place field parameters.

func (PlaceFields) Label

func (PlaceFields) Label() string

Label returns the parameter tag for optional Place fields.

func (*PlaceFields) Set

func (f *PlaceFields) Set(name string, value bool) bool

Set sets the selected field of f to value, by its parameter name. It reports whether name is a known parameter of f.

func (PlaceFields) Values

func (f PlaceFields) Values() []string

Values returns a slice of the selected field names from f.

type Places

type Places []*Place

Places is a searchable slice of Place values.

func (Places) FindByID

func (ps Places) FindByID(id string) *Place

FindByID returns the first Place in ps whose ID matches, or nil.

type Poll

type Poll struct {
	ID      string        `json:"id" twitter:"default"`
	Options []*PollOption `json:"options" twitter:"default"`

	Duration     Minutes    `json:"duration_minutes"`
	EndTime      *time.Time `json:"end_datetime"`
	VotingStatus string     `json:"voting_status"` // e.g., "closed"

	Attachments `json:"attachments"`
}

A Poll is the encoded description of a Twitter poll. The fields marked "default" will always be populated by the API; other fields are filled in based on the parameters in the request.

type PollFields

type PollFields struct {
	Attachments  bool // attachments
	Duration     bool // duration_minutes
	EndTime      bool // end_datetime
	VotingStatus bool // voting_status
}

PollFields defines optional Poll field parameters.

func (PollFields) Label

func (PollFields) Label() string

Label returns the parameter tag for optional Poll fields.

func (*PollFields) Set

func (f *PollFields) Set(name string, value bool) bool

Set sets the selected field of f to value, by its parameter name. It reports whether name is a known parameter of f.

func (PollFields) Values

func (f PollFields) Values() []string

Values returns a slice of the selected field names from f.

type PollOption

type PollOption struct {
	Position int    `json:"position"`
	Label    string `json:"label"`
	Votes    int    `json:"votes"`
}

A PollOption is a single choice item in a poll.

type Polls

type Polls []*Poll

Polls is a searchable slice of Poll values.

func (Polls) FindByID

func (ps Polls) FindByID(id string) *Poll

FindByID returns the first Poll in ps whose ID matches, or nil.

type Ref

type Ref struct {
	Type string `json:"type"`
	ID   string `json:"id"`
}

A Ref is a reference to another entity, giving its type and ID.

type Span

type Span struct {
	Start int `json:"start"`
	End   int `json:"end"`
}

A Span denotes a span of text associated with an annotation.

type Tag

type Tag struct {
	Span
	Tag string `json:"tag"`
}

A Tag denotes a meaningful span of text such as a hashtag (#foo).

type Tweet

type Tweet struct {
	ID   string `json:"id" twitter:"default"`
	Text string `json:"text" twitter:"default"`

	AuthorID       string     `json:"author_id,omitempty"`
	ConversationID string     `json:"conversation_id,omitempty"`
	CreatedAt      *time.Time `json:"created_at,omitempty"`
	Entities       *Entities  `json:"entities,omitempty"`
	InReplyTo      string     `json:"in_reply_to_user_id,omitempty"`
	Language       string     `json:"lang,omitempty"` // https://tools.ietf.org/html/bcp47
	Location       *Location  `json:"geo,omitempty"`
	Sensitive      bool       `json:"possibly_sensitive,omitempty"`
	Referenced     []*Ref     `json:"referenced_tweets,omitempty"`
	Source         string     `json:"source,omitempty"` // e.g., "Twitter Web App"

	ContextAnnotations []*ContextAnnotation `json:"context_annotations,omitempty"`
	Withheld           *Withholding         `json:"withheld,omitempty"`
	Attachments        `json:"attachments,omitempty"`
	MetricSet
}

A Tweet is the decoded form of a single tweet. The fields marked "default" will always be populated by the API; other fields are filled in based on the parameters in the request.

type TweetFields

type TweetFields struct {
	Attachments        bool // attachments
	AuthorID           bool // author_id
	ContextAnnotations bool // context_annotations
	ConversationID     bool // conversation_id
	CreatedAt          bool // created_at
	Entities           bool // entities
	Location           bool // geo
	InReplyTo          bool // in_reply_to_user_id
	Language           bool // lang
	NonPublicMetrics   bool // non_public_metrics
	OrganicMetrics     bool // organic_metrics
	Sensitive          bool // possibly_sensitive
	PromotedMetrics    bool // promoted_metrics
	PublicMetrics      bool // public_metrics
	Referenced         bool // referenced_tweets
	Source             bool // source
	Withheld           bool // withheld
}

TweetFields defines optional Tweet field parameters.

func (TweetFields) Label

func (TweetFields) Label() string

Label returns the parameter tag for optional Tweet fields.

func (*TweetFields) Set

func (f *TweetFields) Set(name string, value bool) bool

Set sets the selected field of f to value, by its parameter name. It reports whether name is a known parameter of f.

func (TweetFields) Values

func (f TweetFields) Values() []string

Values returns a slice of the selected field names from f.

type Tweets

type Tweets []*Tweet

Tweets is a searchable slice of Tweet values.

func (Tweets) FindByID

func (ts Tweets) FindByID(id string) *Tweet

FindByID returns the first Tweet in ts whose ID matches, or nil.

type URL

type URL struct {
	Span
	URL         string `json:"url"`
	Expanded    string `json:"expanded_url"`
	Display     string `json:"display_url"`
	Unwound     string `json:"unwound_url,omitempty"`
	HTTPStatus  int    `json:"status,omitempty"` // e.g., 200
	Title       string `json:"title,omitempty"`
	Description string `json:"description,omitempty"`
}

A URL denotes a span of text encoding a URL.

type User

type User struct {
	ID       string `json:"id" twitter:"default"`
	Name     string `json:"name" twitter:"default"`     // e.g., "User McJones"
	Username string `json:"username" twitter:"default"` // e.g., "mcjonesey"

	CreatedAt       *time.Time    `json:"created_at,omitempty"`
	Description     string        `json:"description,omitempty"` // profile bio
	ProfileURL      string        `json:"url,omitempty"`
	Entities        *UserEntities `json:"entities,omitempty"`
	FuzzyLocation   string        `json:"location,omitempty"` // human-readable
	PinnedTweetID   string        `json:"pinned_tweet_id,omitempty"`
	ProfileImageURL string        `json:"profile_image_url,omitempty"`

	Protected bool `json:"protected,omitempty"`
	Verified  bool `json:"verified,omitempty"`

	PublicMetrics Metrics      `json:"public_metrics,omitempty"`
	Withheld      *Withholding `json:"withheld,omitempty"`
}

A User contains Twitter user account metadata describing a Twitter user. The fields marked "default" will always be populated by the API; other fields are filled in based on the parameters in the request.

type UserEntities

type UserEntities struct {
	URL         Entities `json:"url,omitempty"`
	Description Entities `json:"description,omitempty"`
}

UserEntities describe entities found in a user's profile.

type UserFields

type UserFields struct {
	CreatedAt       bool // created_at
	Description     bool // description
	Entities        bool // entities
	FuzzyLocation   bool // location
	PinnedTweetID   bool // pinned_tweet_id
	ProfileImageURL bool // profile_image_url
	Protected       bool // protected
	PublicMetrics   bool // public_metrics
	ProfileURL      bool // url
	Verified        bool // verified
	Withheld        bool // withheld
}

UserFields defines optional User field parameters.

func (UserFields) Label

func (UserFields) Label() string

Label returns the parameter tag for optional User fields.

func (*UserFields) Set

func (f *UserFields) Set(name string, value bool) bool

Set sets the selected field of f to value, by its parameter name. It reports whether name is a known parameter of f.

func (UserFields) Values

func (f UserFields) Values() []string

Values returns a slice of the selected field names from f.

type Users

type Users []*User

Users is a searchable slice of User values.

func (Users) FindByID

func (us Users) FindByID(id string) *User

FindByID returns the first User in us whose ID matches, or nil.

func (Users) FindByUsername

func (us Users) FindByUsername(username string) *User

FindByUsername returns the first User in us whose Username matches, or nil.

type VerifyCredentials

type VerifyCredentials struct {
	IncludeEntities bool `json:"include_entities"`
	SkipStatus      bool `json:"skip_status"`
	IncludeEmail    bool `json:"include_email"`
}

type Withholding

type Withholding struct {
	Copyright    bool     `json:"copyright"`
	CountryCodes []string `json:"country_codes"`
}

Withholding describes content restrictions.

Directories

Path Synopsis
Program mkenum constructs type enumerations for the optional fields that may be requested in Twitter API v2.
Program mkenum constructs type enumerations for the optional fields that may be requested in Twitter API v2.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL