A simple chat server for maya's stream.
 
 
 
 
 
Go to file
~erin e10eb6c0d2
Add Luna to license
2021-07-19 06:39:13 -04:00
frontend inkscape shit 2021-07-18 16:35:45 -04:00
src Add json api for changing user details 2021-07-18 16:42:09 -04:00
.gitignore Initialize repo with basic functionality 2021-07-16 10:55:07 -04:00
Cargo.lock Fix newline error in users.json maybe? 2021-07-18 14:11:54 -04:00
Cargo.toml Fix newline error in users.json maybe? 2021-07-18 14:11:54 -04:00
LICENSE Add Luna to license 2021-07-19 06:39:13 -04:00
README.md Add json api for changing user details 2021-07-18 16:42:09 -04:00
message.zsh Add message storage and fetching 2021-07-18 11:37:11 -04:00

README.md

Chat Registration System

The basic backend code needed to register & login to a chat system (to be built). Send it the unhashed username and pin, and it'll store it in the users.json file with the pin hashed with SHA1.

API Documentation

POST /api/register/<name>/<pin>/<pronouns> Register the username with the pin provided if it doesn't already exist Returns status & reason json.

GET /api/users/<name> Check if the user exists Returns either

{ "status": "fail", "reason": "user not found", }

or

{ "status": "ok", "user": { "name": "<name>", "pronouns": "<pronouns>", }, }

GET /api/users/<name>/<pin> Check if the user exists, and if the pin provided matches Returns status & reason json.

POST /api/users/change {"name":"<username>","pin":"<pin>","changed_event":"name/pin/pronouns","new_event":"<new name/pin/pronouns>" Change a users details via a json post.

eg. POST /api/users/change {"name":"example","pin":"10","changed_event":"name","new_event":"test" to change the user "example"'s name to "test"

DEPRECATED POST /api/users/change/<name>/<pin>/<new-name>/<new-pin> Change a users pin/name Returns status & reason json.

Chat Documentation

POST /api/message/send {"name":"username","body":"message body","date":"yyy-mm-dd","token":"USER_TOKEN"} Post a json message. Returns status & reason json.

GET /api/message/messages.json Get a json file of all the messages

Chat Planning

Clientside js will register & check login of users, if login is correct will ask for a random token. Backend will generate token, store it, and then send it to the client to set as a cookie. Whenever user sends a message, client will send message & token and backend will check if token matches.

To-Do:

  • Basic auth API
  • Return json instead of string
    • "status" shows wether request was succesful or not, either "ok" or "fail"
    • "reason" is for more details, mainly just for debugging?
  • Basic messaging system
    • Finish up chat::create_message()
    • Create chat::fetch_messages()
    • Create chat::delete_message()
  • Token generation & storage
    • Sets cookie
    • Store token in json
  • Pronouns
    • Set pronouns
    • Change pronouns
    • Multiple sets of pronouns
  • Some form of plural support?
  • User management (banning, etc.)
  • Blacklist words from chat/names
  • More advanced chat features
    • Different types of message events? eg. default, announcement, command
    • Emote support?