Documentation ¶
Overview ¶
Package geddit implements an abstraction for the reddit.com API.
Package reddit implements an abstraction for the reddit.com API.
Index ¶
- Constants
- type Captcha
- type Comment
- type Deleter
- type Friend
- type Karma
- type ListingOptions
- type LoginSession
- func (s LoginSession) Clear() error
- func (s LoginSession) Delete(d Deleter) error
- func (s LoginSession) Frontpage(sort PopularitySort, params ListingOptions) ([]*Submission, error)
- func (s LoginSession) Listing(username, listing string, sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) Me() (*Redditor, error)
- func (s LoginSession) MyComments(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) MyDisliked(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) MyGilded(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) MyHidden(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) MyLiked(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) MyOverview(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) MySaved(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) MySubmitted(sort PopularitySort, after string) ([]*Submission, error)
- func (s LoginSession) NeedsCaptcha() (bool, error)
- func (s LoginSession) NewCaptchaIden() (string, error)
- func (s LoginSession) Reply(r Replier, comment string) error
- func (s LoginSession) Submit(ns *NewSubmission) error
- func (s LoginSession) Vote(v Voter, vote Vote) error
- type NewSubmission
- type OAuthSession
- func (o *OAuthSession) AboutRedditor(user string) (*Redditor, error)
- func (o *OAuthSession) AboutSubreddit(name string) (*Subreddit, error)
- func (o *OAuthSession) AuthCodeURL(state string, scopes []string) string
- func (o *OAuthSession) CodeAuth(code string) error
- func (o *OAuthSession) Comments(h *Submission, sort PopularitySort, params ListingOptions) ([]*Comment, error)
- func (o *OAuthSession) Delete(d Deleter) error
- func (o *OAuthSession) Frontpage(sort PopularitySort, params ListingOptions) ([]*Submission, error)
- func (o *OAuthSession) Listing(username, listing string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
- func (o *OAuthSession) LoginAuth(username, password string) error
- func (o *OAuthSession) Me() (*Redditor, error)
- func (o *OAuthSession) MyFriends() ([]Friend, error)
- func (o *OAuthSession) MyKarma() ([]Karma, error)
- func (o *OAuthSession) MyPreferences() (*Preferences, error)
- func (o *OAuthSession) MySavedComments(params ListingOptions) ([]*Comment, error)
- func (o *OAuthSession) MySavedLinks(params ListingOptions) ([]*Submission, error)
- func (o *OAuthSession) MySubreddits() ([]*Subreddit, error)
- func (o *OAuthSession) MyTrophies() ([]*Trophy, error)
- func (o *OAuthSession) MyUpvoted(sort PopularitySort, params ListingOptions) ([]*Submission, error)
- func (o *OAuthSession) NeedsCaptcha() (bool, error)
- func (o *OAuthSession) NewCaptcha() (string, error)
- func (o OAuthSession) Reply(r Replier, comment string) (*Comment, error)
- func (o *OAuthSession) Save(v Voter, category string) error
- func (o *OAuthSession) SavedComments(user string, params ListingOptions) ([]*Comment, error)
- func (o *OAuthSession) SavedLinks(username string, params ListingOptions) ([]*Submission, error)
- func (o *OAuthSession) Submit(ns *NewSubmission) (*Submission, error)
- func (o *OAuthSession) SubredditSubmissions(subreddit string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
- func (o *OAuthSession) Throttle(interval time.Duration)
- func (o *OAuthSession) Unsave(v Voter, category string) error
- func (o *OAuthSession) Upvoted(username string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
- func (o *OAuthSession) UserTrophies(user string) ([]*Trophy, error)
- func (o *OAuthSession) Vote(v Voter, dir Vote) error
- type PopularitySort
- type Preferences
- type Redditor
- type Replier
- type Session
- func (s Session) AboutRedditor(username string) (*Redditor, error)
- func (s Session) AboutSubreddit(subreddit string) (*Subreddit, error)
- func (s Session) CaptchaImage(iden string) (image.Image, error)
- func (s Session) Comments(h *Submission) ([]*Comment, error)
- func (s Session) DefaultFrontpage(sort PopularitySort, params ListingOptions) ([]*Submission, error)
- func (s Session) SubredditSubmissions(subreddit string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
- type Submission
- type Subreddit
- type Trophy
- type Vote
- type Voter
Examples ¶
Constants ¶
const ( UpVote Vote = "1" DownVote = "-1" RemoveVote = "0" )
const ( DefaultPopularity PopularitySort = "" HotSubmissions = "hot" NewSubmissions = "new" RisingSubmissions = "rising" TopSubmissions = "top" ControversialSubmissions = "controversial" )
const ( DefaultAge ageSort = "" ThisHour = "hour" ThisDay = "day" ThisMonth = "month" ThisYear = "year" AllTime = "all" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Comment ¶
type Comment struct { Author string //`json:"author"` Body string //`json:"body"` BodyHTML string //`json:"body_html"` Subreddit string //`json:"subreddit"` LinkID string //`json:"link_id"` ParentID string //`json:"parent_id"` SubredditID string //`json:"subreddit_id"` FullID string //`json:"name"` UpVotes float64 //`json:"ups"` DownVotes float64 //`json:"downs"` Created float64 //`json:"created_utc"` Edited bool //`json:"edited"` BannedBy *string //`json:"banned_by"` ApprovedBy *string //`json:"approved_by"` AuthorFlairTxt *string //`json:"author_flair_text"` AuthorFlairCSSClass *string //`json:"author_flair_css_class"` NumReports *int //`json:"num_reports"` Likes *int //`json:"likes"` Replies []*Comment }
Comment represents a reddit comment.
type Deleter ¶
type Deleter interface {
// contains filtered or unexported methods
}
Deleter represents something that can be deleted on reddit.com.
type ListingOptions ¶
type LoginSession ¶
type LoginSession struct { Session // contains filtered or unexported fields }
LoginSession represents an HTTP session with reddit.com -- all authenticated API calls are methods bound to this type.
func NewLoginSession ¶
func NewLoginSession(username, password, useragent string) (*LoginSession, error)
NewLoginSession creates a new session for those who want to log into a reddit account.
func (LoginSession) Clear ¶
func (s LoginSession) Clear() error
Clear clears all session cookies and updates the current session with a new one.
func (LoginSession) Delete ¶
func (s LoginSession) Delete(d Deleter) error
Delete deletes a Submission or Comment.
func (LoginSession) Frontpage ¶
func (s LoginSession) Frontpage(sort PopularitySort, params ListingOptions) ([]*Submission, error)
Frontpage returns the submissions on the logged-in user's personal frontpage.
func (LoginSession) Listing ¶
func (s LoginSession) Listing(username, listing string, sort PopularitySort, after string) ([]*Submission, error)
Listing returns a listing for an user
func (LoginSession) Me ¶
func (s LoginSession) Me() (*Redditor, error)
Me returns an up-to-date redditor object of the logged-in user.
func (LoginSession) MyComments ¶
func (s LoginSession) MyComments(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Comments listing for the logged-in user
func (LoginSession) MyDisliked ¶
func (s LoginSession) MyDisliked(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Disliked listing for the logged-in user
func (LoginSession) MyGilded ¶
func (s LoginSession) MyGilded(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Gilded listing for the logged-in user
func (LoginSession) MyHidden ¶
func (s LoginSession) MyHidden(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Hidden listing for the logged-in user
func (LoginSession) MyLiked ¶
func (s LoginSession) MyLiked(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Liked listing for the logged-in user
func (LoginSession) MyOverview ¶
func (s LoginSession) MyOverview(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Overview listing for the logged-in user
func (LoginSession) MySaved ¶
func (s LoginSession) MySaved(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Saved listing for the logged-in user
func (LoginSession) MySubmitted ¶
func (s LoginSession) MySubmitted(sort PopularitySort, after string) ([]*Submission, error)
Fetch the Submitted listing for the logged-in user
func (LoginSession) NeedsCaptcha ¶
func (s LoginSession) NeedsCaptcha() (bool, error)
NeedsCaptcha returns true if captcha is required, false if it isn't
func (LoginSession) NewCaptchaIden ¶
func (s LoginSession) NewCaptchaIden() (string, error)
NewCaptchaIden gets a new captcha iden from reddit
func (LoginSession) Reply ¶
func (s LoginSession) Reply(r Replier, comment string) error
Reply posts a comment as a response to a Submission or Comment.
func (LoginSession) Submit ¶
func (s LoginSession) Submit(ns *NewSubmission) error
type NewSubmission ¶
type NewSubmission struct { Subreddit string Title string Content string Self bool SendReplies bool Resubmit bool Save bool Captcha *Captcha }
NewSubmission contains the data needed to submit
func NewLinkSubmission ¶
func NewLinkSubmission(sr, title, link string, replies bool, c *Captcha) *NewSubmission
NewLinkSubmission returns a NewSubmission with parameters appropriate for a link submission
func NewTextSubmission ¶
func NewTextSubmission(sr, title, text string, replies bool, c *Captcha) *NewSubmission
NewTextSubmission returns a NewSubmission with parameters appropriate for a text submission
type OAuthSession ¶
type OAuthSession struct { Client *http.Client ClientID string ClientSecret string OAuthConfig *oauth2.Config //TokenExpiry time.Time UserAgent string // contains filtered or unexported fields }
OAuthSession represents an OAuth session with reddit.com -- all authenticated API calls are methods bound to this type.
func NewOAuthSession ¶
func NewOAuthSession(clientID, clientSecret, useragent, redirectURL string) (*OAuthSession, error)
NewOAuthSession creates a new session for those who want to log into a reddit account via OAuth.
Example (Login) ¶
package main import ( "log" "github.com/jzelinskie/geddit" ) func main() { o, err := geddit.NewOAuthSession( "client_id", "client_secret", "Testing OAuth Bot by u/my_user v0.1 see source https://github.com/jzelinskie/geddit", "http://redirect.url", ) if err != nil { log.Fatal(err) } // Create new auth token for confidential clients (personal scripts/apps). err = o.LoginAuth("my_user", "my_password") if err != nil { log.Fatal(err) } // Ready to make API calls! }
Output:
Example (Url) ¶
package main import ( "fmt" "log" "github.com/jzelinskie/geddit" ) func main() { o, err := geddit.NewOAuthSession( "client_id", "client_secret", "Testing OAuth Bot by u/my_user v0.1 see source https://github.com/jzelinskie/geddit", "http://redirect.url", ) if err != nil { log.Fatal(err) } // Pass a random/unique state string which will be returned to the // redirect URL. Ideally, you should verify that it matches to // avoid CSRF attack. url := o.AuthCodeURL("random string", []string{"indentity", "read"}) fmt.Printf("Visit %s to obtain auth code", url) var code string fmt.Scanln(&code) // Create and set token using given auth code. err = o.CodeAuth(code) if err != nil { log.Fatal(err) } // Ready to make API calls! }
Output:
func (*OAuthSession) AboutRedditor ¶
func (o *OAuthSession) AboutRedditor(user string) (*Redditor, error)
AboutRedditor returns a Redditor for the given username using OAuth.
func (*OAuthSession) AboutSubreddit ¶
func (o *OAuthSession) AboutSubreddit(name string) (*Subreddit, error)
AboutSubreddit returns a subreddit for the given subreddit name using OAuth.
func (*OAuthSession) AuthCodeURL ¶
func (o *OAuthSession) AuthCodeURL(state string, scopes []string) string
AuthCodeURL creates and returns an auth URL which contains an auth code.
func (*OAuthSession) CodeAuth ¶
func (o *OAuthSession) CodeAuth(code string) error
CodeAuth creates and sets a token using an authentication code returned from AuthCodeURL.
func (*OAuthSession) Comments ¶
func (o *OAuthSession) Comments(h *Submission, sort PopularitySort, params ListingOptions) ([]*Comment, error)
Comments returns the comments for a given Submission using OAuth.
func (*OAuthSession) Delete ¶
func (o *OAuthSession) Delete(d Deleter) error
Delete deletes a link or comment using the given full name ID.
func (*OAuthSession) Frontpage ¶
func (o *OAuthSession) Frontpage(sort PopularitySort, params ListingOptions) ([]*Submission, error)
Frontpage returns the submissions on the default reddit frontpage using OAuth.
func (*OAuthSession) Listing ¶
func (o *OAuthSession) Listing(username, listing string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
Listing returns a slice of Submission pointers. See https://www.reddit.com/dev/api#listings for documentation.
func (*OAuthSession) LoginAuth ¶
func (o *OAuthSession) LoginAuth(username, password string) error
LoginAuth creates the required HTTP client with a new token.
func (*OAuthSession) Me ¶
func (o *OAuthSession) Me() (*Redditor, error)
func (*OAuthSession) MyFriends ¶
func (o *OAuthSession) MyFriends() ([]Friend, error)
func (*OAuthSession) MyKarma ¶
func (o *OAuthSession) MyKarma() ([]Karma, error)
func (*OAuthSession) MyPreferences ¶
func (o *OAuthSession) MyPreferences() (*Preferences, error)
func (*OAuthSession) MySavedComments ¶
func (o *OAuthSession) MySavedComments(params ListingOptions) ([]*Comment, error)
MySavedComments fetches comments saved by current user using OAuth.
func (*OAuthSession) MySavedLinks ¶
func (o *OAuthSession) MySavedLinks(params ListingOptions) ([]*Submission, error)
MySavedLinks fetches links saved by current user using OAuth.
func (*OAuthSession) MySubreddits ¶
func (o *OAuthSession) MySubreddits() ([]*Subreddit, error)
MySubreddits fetchs subreddits the current user subscribes to. TODO support other endpoints https://www.reddit.com/dev/api/#GET_subreddits_mine_{where}
func (*OAuthSession) MyTrophies ¶
func (o *OAuthSession) MyTrophies() ([]*Trophy, error)
func (*OAuthSession) MyUpvoted ¶
func (o *OAuthSession) MyUpvoted(sort PopularitySort, params ListingOptions) ([]*Submission, error)
func (*OAuthSession) NeedsCaptcha ¶
func (o *OAuthSession) NeedsCaptcha() (bool, error)
NeedsCaptcha check whether CAPTCHAs are needed for the Submit function.
func (*OAuthSession) NewCaptcha ¶
func (o *OAuthSession) NewCaptcha() (string, error)
NewCaptcha returns a string used to create CAPTCHA links for users.
func (OAuthSession) Reply ¶
func (o OAuthSession) Reply(r Replier, comment string) (*Comment, error)
Reply posts a comment as a response to a Submission or Comment using OAuth.
func (*OAuthSession) Save ¶
func (o *OAuthSession) Save(v Voter, category string) error
Save saves a link or comment using OAuth.
func (*OAuthSession) SavedComments ¶
func (o *OAuthSession) SavedComments(user string, params ListingOptions) ([]*Comment, error)
SavedComments fetches comments saved by given username using OAuth.
func (*OAuthSession) SavedLinks ¶
func (o *OAuthSession) SavedLinks(username string, params ListingOptions) ([]*Submission, error)
SavedLinks fetches links saved by given username using OAuth.
func (*OAuthSession) Submit ¶
func (o *OAuthSession) Submit(ns *NewSubmission) (*Submission, error)
Submit accepts a NewSubmission type and submits a new link using OAuth. Returns a Submission type.
func (*OAuthSession) SubredditSubmissions ¶
func (o *OAuthSession) SubredditSubmissions(subreddit string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
SubredditSubmissions returns the submissions on the given subreddit using OAuth.
func (*OAuthSession) Throttle ¶
func (o *OAuthSession) Throttle(interval time.Duration)
Throttle sets the interval of each HTTP request. Disable by setting interval to 0. Disabled by default. Throttling is applied to invidual OAuthSession types.
func (*OAuthSession) Unsave ¶
func (o *OAuthSession) Unsave(v Voter, category string) error
Unsave saves a link or comment using OAuth.
func (*OAuthSession) Upvoted ¶
func (o *OAuthSession) Upvoted(username string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
func (*OAuthSession) UserTrophies ¶
func (o *OAuthSession) UserTrophies(user string) ([]*Trophy, error)
type PopularitySort ¶
type PopularitySort string
PopularitySort represents the possible ways to sort submissions by popularity.
type Preferences ¶
type Preferences struct { Research bool `json:"research"` ShowStylesheets bool `json:"show_stylesheets"` ShowLinkFlair bool `json:"show_link_flair"` ShowTrending bool `json:"show_trending"` PrivateFeeds bool `json:"private_feeds"` IgnoreSuggestedSort bool `json:"ignore_suggested_sort"` Media string `json:"media"` ClickGadget bool `json:"clickgadget"` LabelNSFW bool `json:"label_nsfw"` Over18 bool `json:"over_18"` EmailMessages bool `json:"email_messages"` HighlightControversial bool `json:"highlight_controversial"` ForceHTTPS bool `json:"force_https"` Language string `json:"lang"` HideFromRobots bool `json:"hide_from_robots"` PublicVotes bool `json:"public_votes"` ShowFlair bool `json:"show_flair"` HideAds bool `json:"hide_ads"` Beta bool `json:"beta"` NewWindow bool `json:"newwindow"` LegacySearch bool `json:"legacy_search"` }
type Redditor ¶
type Replier ¶
type Replier interface {
// contains filtered or unexported methods
}
Replier represents something that can be replied to on reddit.com.
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session represents an HTTP session with reddit.com without logging into an account.
func NewSession ¶
NewSession creates a new unauthenticated session to reddit.com.
func (Session) AboutRedditor ¶
AboutRedditor returns a Redditor for the given username.
func (Session) AboutSubreddit ¶
AboutSubreddit returns a subreddit for the given subreddit name.
func (Session) CaptchaImage ¶
CaptchaImage gets the png corresponding to the captcha iden and decodes it
func (Session) Comments ¶
func (s Session) Comments(h *Submission) ([]*Comment, error)
Comments returns the comments for a given Submission.
func (Session) DefaultFrontpage ¶
func (s Session) DefaultFrontpage(sort PopularitySort, params ListingOptions) ([]*Submission, error)
DefaultFrontpage returns the submissions on the default reddit frontpage.
func (Session) SubredditSubmissions ¶
func (s Session) SubredditSubmissions(subreddit string, sort PopularitySort, params ListingOptions) ([]*Submission, error)
SubredditSubmissions returns the submissions on the given subreddit.
type Submission ¶
type Submission struct { Author string `json:"author"` Title string `json:"title"` URL string `json:"url"` Domain string `json:"domain"` Subreddit string `json:"subreddit"` SubredditID string `json:"subreddit_id"` FullID string `json:"name"` ID string `json:"id"` Permalink string `json:"permalink"` Selftext string `json:"selftext"` ThumbnailURL string `json:"thumbnail"` DateCreated float64 `json:"created_utc"` NumComments int `json:"num_comments"` Score int `json:"score"` Ups int `json:"ups"` Downs int `json:"downs"` IsNSFW bool `json:"over_18"` IsSelf bool `json:"is_self"` WasClicked bool `json:"clicked"` IsSaved bool `json:"saved"` BannedBy *string `json:"banned_by"` }
Submission represents an individual post from the perspective of a subreddit. Remember to check for nil pointers before using any pointer fields.
func (*Submission) FullPermalink ¶
func (h *Submission) FullPermalink() string
FullPermalink returns the full URL of a submission.
func (*Submission) String ¶
func (h *Submission) String() string
String returns the string representation of a submission.
type Subreddit ¶
type Subreddit struct { Name string `json:"display_name"` Title string `json:"title"` Desc string `json:"description"` PublicDesc string `json:"public_description"` URL string `json:"url"` FullID string `json:"name"` ID string `json:"id"` HeaderImg string `json:"header_img"` DateCreated float64 `json:"created_utc"` NumSubs int `json:"subscribers"` IsNSFW bool `json:"over18"` }
Subreddit represents a subreddit from reddit.com.