https://github.com/ayan4m1/gatsby-source-reddit-wiki
Gatsby source plugin for pulling data from a public Reddit wiki using the Reddit API.
https://github.com/ayan4m1/gatsby-source-reddit-wiki
Last synced: over 1 year ago
JSON representation
Gatsby source plugin for pulling data from a public Reddit wiki using the Reddit API.
- Host: GitHub
- URL: https://github.com/ayan4m1/gatsby-source-reddit-wiki
- Owner: ayan4m1
- License: mit
- Created: 2020-01-20T16:51:47.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-05-16T00:26:44.000Z (about 4 years ago)
- Last Synced: 2025-03-30T15:44:47.361Z (over 1 year ago)
- Language: JavaScript
- Size: 1.02 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gatsby-source-reddit-wiki
Source plugin for pulling data from a public or private Reddit wiki using the Reddit API.
## Features
## Install
```
$> npm install --save gatsby-source-reddit-wiki
```
## API Setup
1. Go to [Reddit's apps page](https://www.reddit.com/prefs/apps)
2. Click "create app"
3. Enter any name
4. Select "script" application type
5. Enter anything for description, about URI, and redirect URI
6. Click "create app"
7. Ensure the user you will use to authenticate has been granted access to the app
## Usage
### gatsby-config.js
```js
module.exports = {
plugins: [
// your other plugins here...
'gatsby-transformer-remark',
{
resolve: 'gatsby-source-reddit-wiki',
options: {
// the following four fields are REQUIRED
username: 'spez',
password: 'ReallySecure',
appId: '8sjcAWF_98VAS',
appSecret: 'ck7S_ACJiobijq2v9asjiv',
// required name of subreddit which has its wiki enabled
// do not include the /r/ prefix
subreddit: 'aww',
// optional time in milliseconds to wait in between requests
// to the reddit API
minTime: 1000
}
}
]
};
```
### gatsby-node.js
See [gatsby-transformer-remark](https://www.gatsbyjs.org/packages/gatsby-transformer-remark/) for a complete example illustrating how to render a page component from the wiki data. All of your content is transformed to HTML in `allMarkdownRemark`.
### Querying
Enumerate nodes:
```graphql
{
allRedditWikiPage {
nodes {
id
path
content_md
revision_by {
name
}
}
}
}
```
Only fetch pages most recently updated by moderators:
```graphql
{
allRedditWikiPage(filter: { revision_by: { is_mod: { eq: true } } }) {
nodes {
id
path
content_md
revision_by {
name
}
}
}
}
```
## Configuration
**NOTE**: You cannot use this plugin with a Reddit account that has 2FA enabled.
| Key | Type | Required | Description |
| --------- | ------ | -------- | ---------------------------------------------- |
| username | String | **Y** | Reddit username |
| password | String | **Y** | Reddit password |
| appId | String | **Y** | Reddit-generated app ID |
| appSecret | String | **Y** | Reddit-generated app secret |
| subreddit | String | **Y** | Subreddit name without `/r/` prefix |
| minTime | Number | N | Minimum time to wait between API request in ms |