added API documentation
This commit is contained in:
parent
a06239c130
commit
ab35d0f1b3
2 changed files with 166 additions and 0 deletions
|
@ -3,3 +3,39 @@ sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
|
For web interface
|
||||||
|
|
||||||
|
## Endpoints
|
||||||
|
|
||||||
|
### Auhentication
|
||||||
|
|
||||||
|
#### `/login`
|
||||||
|
|
||||||
|
Login using discord OAuth2
|
||||||
|
|
||||||
|
#### `/logout`
|
||||||
|
|
||||||
|
Logout from account
|
||||||
|
|
||||||
|
#### `/auth`
|
||||||
|
|
||||||
|
Discord OAuth2 callback
|
||||||
|
|
||||||
|
### REST
|
||||||
|
|
||||||
|
#### `/users/new`
|
||||||
|
|
||||||
|
Create a new user
|
||||||
|
|
||||||
|
#### `/users/find`
|
||||||
|
|
||||||
|
Find a user
|
||||||
|
|
||||||
|
#### `/users`
|
||||||
|
|
||||||
|
List all users in the database
|
||||||
|
|
||||||
|
#### `/list-servers`
|
||||||
|
|
||||||
|
List all servers in the database
|
||||||
|
|
130
docs/4-api/2-setting-up.md
Normal file
130
docs/4-api/2-setting-up.md
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
---
|
||||||
|
sidebar_position: 2
|
||||||
|
---
|
||||||
|
|
||||||
|
# Setting up
|
||||||
|
|
||||||
|
This page will teach you how to set up the [Llama bot web API](https://github.com/llama-bot/llama-bot-web-api).
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
### Pre-requirements
|
||||||
|
|
||||||
|
- [Node.js](https://nodejs.org) version 14 or greater
|
||||||
|
- Discord account
|
||||||
|
- Google Firebase account
|
||||||
|
|
||||||
|
### Discord
|
||||||
|
|
||||||
|
1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) and create an application. Select one if you already have it. Using the same application used by the discord bot is recommended.
|
||||||
|
2. Go to the OAuth2 tab.
|
||||||
|
3. Add the following redirect URIs:
|
||||||
|
|
||||||
|
- localhost for testing
|
||||||
|
|
||||||
|
- `http://localhost:5001/<project-id>/us-central1/api`
|
||||||
|
- `http://localhost:5001/<project-id>/us-central1/api/auth`
|
||||||
|
|
||||||
|
- http
|
||||||
|
- `http://us-central1-<project-id>.cloudfunctions.net/api`
|
||||||
|
- `http://us-central1-<project-id>.cloudfunctions.net/api/auth`
|
||||||
|
- https
|
||||||
|
- `https://us-central1-<project-id>.cloudfunctions.net/api`
|
||||||
|
- `https://us-central1-<project-id>.cloudfunctions.net/api/auth`
|
||||||
|
|
||||||
|
### Firebase
|
||||||
|
|
||||||
|
- must be the same project that the llama bot is using
|
||||||
|
|
||||||
|
1. Create a firebase project.
|
||||||
|
|
||||||
|
https://console.firebase.google.com
|
||||||
|
|
||||||
|
2. Create/Select a project. Make sure it is using the [blaze plan](https://firebase.google.com/pricing).
|
||||||
|
3. Go to the `Authentication` tab and enable `Email/Password` Authentication.
|
||||||
|
4. Go to the `Firestore Database` tab and enable it (using production mode is highly recommended).
|
||||||
|
|
||||||
|
### Local
|
||||||
|
|
||||||
|
1. Clone the [llama-bot-web-api](https://github.com/llama-bot/llama-bot-web-api) repository
|
||||||
|
|
||||||
|
Using HTTPS
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/llama-bot/llama-bot-web-api.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Using SSH:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone git@github.com:llama-bot/llama-bot-web-api.git
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Create `functions/src/config.json` and fill in the data.
|
||||||
|
|
||||||
|
```json title="functions/src/config.json"
|
||||||
|
{
|
||||||
|
"region": "FIREBASE_FUNCTIONS_REGION_HERE", // Region where firebase functions is hosted in. Example: us-central1
|
||||||
|
"scopes": ["DISCORD", "SCOPES", "HERE"] // Discord OAuth2 scopes. Example: ["identify", "email"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Create `functions/src/secret.json` and fill in the data.
|
||||||
|
|
||||||
|
```json title="functions/src/secret.json"
|
||||||
|
{
|
||||||
|
"projectID": "FIREBASE_PROJECT_ID_HERE", // Firebase project ID
|
||||||
|
"clientID": "DISCORD_CLIENT_ID_HERE", // Discord OAuth2 Client ID
|
||||||
|
"clientSecret": "DISCORD_CLIENT_SECRET_HERE", // Discord OAuth2 Client Secret
|
||||||
|
"secret": "SECRET_COOKIE_KEY_HERE" // secret to be used for express session
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Install firebase cli tools.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g firebase-tools
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Select firebase project
|
||||||
|
|
||||||
|
```bash
|
||||||
|
firebase use <firebase-project-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
6. Go to `functions` directory and install necessary dependencies.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
1. Start local test server by running the following command:
|
||||||
|
```bash
|
||||||
|
npm run serve
|
||||||
|
```
|
||||||
|
2. Open locally served API and log in with your discord account.
|
||||||
|
|
||||||
|
:::warning
|
||||||
|
HTTP**S** won't work when serving locally. Use HTTP instead.
|
||||||
|
:::
|
||||||
|
|
||||||
|
Login test URI: `http://localhost:5001/<FIREBASE-PROJECT-ID>/us-central1/api/login`
|
||||||
|
|
||||||
|
3. If everything is set up correctly, this should have added a new user that you can check it in the firebase `Authentication` tab.
|
||||||
|
|
||||||
|
### Deploying
|
||||||
|
|
||||||
|
Deploying the functions to production is as simple as running the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
firebase deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
Production API URI: `https://us-central1-<firebase-project-id>.cloudfunctions.net/api`.
|
||||||
|
|
||||||
|
## More info
|
||||||
|
|
||||||
|
- discord developers documentation: https://discord.com/developers/docs
|
||||||
|
- firebase admin sdk documentation: https://firebase.google.com/docs
|
Loading…
Add table
Add a link
Reference in a new issue