Skip to content
This repository was archived by the owner on Mar 5, 2023. It is now read-only.

botlabs-gg/go-reddit

This branch is 11 commits ahead of, 5 commits behind cameronstanley/go-reddit:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

08b1f3e · Mar 12, 2020

History

56 Commits
Oct 31, 2016
Oct 12, 2016
Oct 14, 2016
Oct 12, 2016
Oct 29, 2016
Oct 29, 2016
Oct 27, 2016
Dec 18, 2016
Oct 26, 2016
Oct 29, 2016
Oct 31, 2016
Nov 4, 2016
Nov 4, 2016
Dec 21, 2016
Mar 12, 2020
Feb 27, 2020
Dec 18, 2016
Nov 4, 2016
Nov 4, 2016
Nov 2, 2016
Nov 2, 2016
Dec 18, 2016
Oct 18, 2016
Nov 3, 2016
Oct 26, 2016
Nov 3, 2016
Oct 26, 2016

Repository files navigation

go-reddit

Build Status GoDoc Go Report Card

A Golang wrapper for the Reddit API. This package aims to implement every endpoint exposed according to the documentation in a user friendly, well tested and documented manner.

Installation

Install the package with

go get github.com/cameronstanley/go-reddit

Authentication

Many endpoints in the Reddit API require OAuth2 authentication to access. To get started, register an app at https://www.reddit.com/prefs/apps and be sure to note the ID, secret, and redirect URI. These values will be used to construct the Authenticator to generate a client with OAuth access. The following is an example of creating an authenticated client using a manual approach:

package main

import(
  "fmt"
  "github.com/cameronstanley/go-reddit"
)

func main() {
  // Create a new authenticator with your app's client ID, secret, and redirect URI
  // A random string representing state and a list of requested OAuth scopes are required
  authenticator := reddit.NewAuthenticator("<client_id>", "<client_secret>", "<redirect_uri>", "<random_string>", reddit.ScopeIdentity)
  
  // Instruct your user to visit the URL retrieved from GetAuthenticationURL in their web browser
  url := authenticator.GetAuthenticationURL()
  fmt.Printf("Please proceed to %s\n", url)

  // After the user grants permission for your client, they will be redirected to the supplied redirect_uri with a code and state as URL parameters
  // Gather these values from the user on the console
  // Note: this can be automated by having a web server listen on the redirect_uri and parsing the state and code params
  fmt.Print("Enter state: ")
  var state string
  fmt.Scanln(&state)

  fmt.Print("Enter code: ")
  var code string
  fmt.Scanln(&code)

  // Exchange the code for an access token
  token, err := authenticator.GetToken(state, code)
  
  // Create a new client using the access token and a user agent string to identify your application
  client := authenticator.GetAuthClient(token, "<platform>:<app ID>:<version string> (by /u/<reddit username>)")
}

Examples

// Returns a new unauthenticated client for invoking the API
client := reddit.NoAuthClient

// Retrives a listing of default subreddits
client.GetDefaultSubreddits()

// Retrives a listing of hot links for the "news" subreddit
client.GetHotLinks("news")

About

Golang Reddit API Wrapper

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%