mirror of
https://gitlab.com/nullmax17/personal-website.git
synced 2025-03-14 21:21:11 +03:00
81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
// Controller for minecraft mod CC:Tweaked
|
|
// I decided to make it so I and my friend can create some bizzare stuff in minectaft :D
|
|
// It turned out pretty well and was the first controller which I tested.
|
|
|
|
package controllers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/kaptinlin/jsonrepair"
|
|
)
|
|
|
|
// Json unmarshalled object from website.
|
|
type Message struct {
|
|
Content string `json:"content"`
|
|
Msg_type int `json:"msg_type"`
|
|
}
|
|
|
|
var message_queue = []Message{}
|
|
|
|
func preprocess_message(r *http.Request) []byte {
|
|
message_bytes, _ := io.ReadAll(r.Body)
|
|
message_body := string(message_bytes)
|
|
|
|
repaired, err := jsonrepair.JSONRepair(message_body)
|
|
if err != nil {
|
|
log.Printf("Failed to fix JSON: %v", err)
|
|
}
|
|
repaired_bytes := []byte(repaired)
|
|
|
|
return repaired_bytes
|
|
}
|
|
|
|
func decodeMessage(r *http.Request) (Message, error) {
|
|
var messageRC Message
|
|
|
|
processed_message := preprocess_message(r)
|
|
|
|
err := json.Unmarshal(processed_message, &messageRC)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return Message{}, err
|
|
}
|
|
return messageRC, nil
|
|
}
|
|
|
|
// Garbage collection for messages.
|
|
func clearQueue() {
|
|
if len(message_queue) <= 1 {
|
|
return
|
|
}
|
|
message_queue = message_queue[1:]
|
|
}
|
|
|
|
func PostSendMessage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
decoded_message, err := decodeMessage(r)
|
|
if err != nil {
|
|
w.WriteHeader(400)
|
|
fmt.Fprintf(w, "Failed to decode message %v", err)
|
|
log.Printf("Failed to decode message %v", err)
|
|
return
|
|
}
|
|
message_queue = append(message_queue, decoded_message)
|
|
|
|
clearQueue()
|
|
|
|
}
|
|
|
|
func GetMessage(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("content-type", "application/json")
|
|
if len(message_queue) == 0 {
|
|
message_queue = append(message_queue, Message{"no message accepted yet", 404})
|
|
}
|
|
fmt.Fprintln(w, message_queue[0])
|
|
}
|