testt run code

This commit is contained in:
2022-09-26 22:38:13 +02:00
parent 4f66fb8698
commit 7a7d7ac02f
8 changed files with 14 additions and 13 deletions

View File

@ -0,0 +1,263 @@
package actions
import (
"context"
"encoding/json"
"errors"
"io/ioutil"
"net/http"
"strconv"
"github.com/FrankenBotDev/FrankenAPI/ent"
"github.com/FrankenBotDev/FrankenAPI/ent/actions"
"github.com/FrankenBotDev/FrankenAPI/pkg/routes/logger"
"github.com/FrankenBotDev/FrankenAPI/pkg/sys"
"github.com/go-chi/chi/v5"
)
func ActionRouter() http.Handler {
r := chi.NewRouter()
r.Get("/", getActions)
r.Get("/search", getActionsbyID)
r.Post("/", addAction)
r.Put("/", updateAction)
r.Delete("/", deleteAction)
return r
}
func getActions(w http.ResponseWriter, r *http.Request) {
actionRequest := r.URL.Query()
if actionRequest.Get("serverid") != "" {
if actionRequest.Get("commiterid") != "" {
actions, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Actions.Query().
Where(actions.Serverid(actionRequest.Get("serverid"))).
Order(ent.Desc(actions.FieldID)).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_fetch_from_database", err)
}
sys.SuccessJsonResponse(w, actions)
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("commiterid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("serverid needs to be set"))
}
}
func getActionsbyID(w http.ResponseWriter, r *http.Request) {
actionRequest := r.URL.Query()
if actionRequest.Get("serverid") != "" {
if actionRequest.Get("commiterid") != "" {
if actionRequest.Get("refid") != "" {
actions, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Actions.Query().
Where(actions.Serverid(actionRequest.Get("serverid")), actions.Refid(actionRequest.Get("refid"))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_fetch_from_database", err)
}
sys.SuccessJsonResponse(w, actions)
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("refid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("commiterid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("serverid needs to be set"))
}
}
func addAction(w http.ResponseWriter, r *http.Request) {
actionData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("the request appears to be empty"))
}
// proccess data
actionJson := make(map[string]any)
err = json.Unmarshal(actionData, &actionJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
devRefid := sys.RandStringRunes(16)
if actionJson["serverid"].(string) != "" {
if actionJson["comiterid"].(string) != "" {
if devRefid != "" {
if actionJson["target"].(string) != "" {
if actionJson["type"].(string) != "" {
if actionJson["duration"].(string) != "" {
if actionJson["reason"].(string) != "" {
if strconv.FormatBool(actionJson["temp"].(bool)) != "" {
_, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Actions.Create().
SetRefid(devRefid).
SetServerid(actionJson["serverid"].(string)).
SetTarget(actionJson["target"].(string)).
SetType(actionJson["type"].(string)).
SetDuration(actionJson["duration"].(string)).
SetCommiter(actionJson["comiterid"].(string)).
SetReason(actionJson["reason"].(string)).
SetTemp(actionJson["temp"].(bool)).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
logger.Logtodb([]string{
actionJson["comiterid"].(string),
"Created action with RefID: " + devRefid,
"Action Create",
actionJson["serverid"].(string),
},
r.Context().Value(sys.EntClientKey).(*ent.Client),
r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "data_could_not_be_updated", err)
}
sys.SuccessJsonResponse(w, "data_updated")
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("temp needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("reason needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("duration needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("type needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("target need to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("refid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("commiterid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("serverid needs to be set"))
}
}
func deleteAction(w http.ResponseWriter, r *http.Request) {
actionData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("the request appears to be empty"))
}
// proccess data
actionJson := make(map[string]any)
err = json.Unmarshal(actionData, &actionJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
if actionJson["comiterid"].(string) != "" {
if actionJson["serverid"].(string) != "" {
if actionJson["refid"].(string) != "" {
_, err = r.Context().Value(sys.EntClientKey).(*ent.Client).Actions.Delete().
Where(actions.Serverid(actionJson["serverid"].(string)), actions.Refid(actionJson["refid"].(string))).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "data_could_not_be_removed", err)
}
logger.Logtodb([]string{
actionJson["comiterid"].(string),
"Deleted action with RefID: " + actionJson["refid"].(string),
"Action Delete",
actionJson["serverid"].(string),
}, r.Context().Value(sys.EntClientKey).(*ent.Client),
r.Context().Value(sys.ContextClientKey).(context.Context))
sys.SuccessJsonResponse(w, "data_updated")
}
}
}
}
func updateAction(w http.ResponseWriter, r *http.Request) {
actionData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("the request appears to be empty"))
}
// proccess data
actionJson := make(map[string]any)
err = json.Unmarshal(actionData, &actionJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
if actionJson["serverid"].(string) != "" {
if actionJson["commiter"].(string) != "" {
if actionJson["refid"].(string) != "" {
if actionJson["target"].(string) != "" {
if actionJson["type"].(string) != "" {
if actionJson["duration"].(string) != "" {
if actionJson["reason"].(string) != "" {
if strconv.FormatBool(actionJson["temp"].(bool)) != "" {
_, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Actions.Update().
Where(actions.Serverid(actionJson["serverid"].(string)), actions.Refid(actionJson["refid"].(string))).
SetRefid(actionJson["refid"].(string)).
SetTarget(actionJson["target"].(string)).
SetType(actionJson["type"].(string)).
SetDuration(actionJson["duration"].(string)).
SetCommiter(actionJson["commiter"].(string)).
SetReason(actionJson["reason"].(string)).
SetTemp(actionJson["temp"].(bool)).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "data_could_not_be_updated", err)
}
logger.Logtodb([]string{
actionJson["commiter"].(string),
"Updated Action with RefID: " + actionJson["refid"].(string),
"Action Update",
actionJson["serverid"].(string),
}, r.Context().Value(sys.EntClientKey).(*ent.Client),
r.Context().Value(sys.ContextClientKey).(context.Context))
sys.SuccessJsonResponse(w, "data_updated")
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("temp needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("reason needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("duration needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("type needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("target need to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("refid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("commiterid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("serverid needs to be set"))
}
}

View File

@ -0,0 +1,80 @@
package logger
import (
"context"
"encoding/json"
"io/ioutil"
"net/http"
"github.com/FrankenBotDev/FrankenAPI/ent"
"github.com/FrankenBotDev/FrankenAPI/ent/logging"
"github.com/FrankenBotDev/FrankenAPI/pkg/sys"
"github.com/go-chi/chi/v5"
)
func LogRouter() http.Handler {
r := chi.NewRouter()
r.Get("/", getapilog)
r.Post("/", apilogger)
return r
}
func apilogger(w http.ResponseWriter, r *http.Request) {
logJson := make(map[string]string)
logData, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, `{"type":"error", "code":"request_data_could_not_be_proccessed"}`, http.StatusInternalServerError)
return
}
err = json.Unmarshal(logData, &logJson)
if err != nil {
http.Error(w, `{"type":"error", "code":"request_data_could_not_be_proccessed"}`, http.StatusInternalServerError)
return
}
err = Logtodb([]string{logJson["commiterid"], logJson["description"], logJson["actiontype"], logJson["serverid"]}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
http.Error(w, `{"type":"error", "code":"could_not_create_log_in_database"}`, http.StatusInternalServerError)
return
}
w.Write([]byte(`{"type":"success", "code":"log_added_to_database"}`))
}
func getapilog(w http.ResponseWriter, r *http.Request) {
loggerRequest := r.URL.Query()
log, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Logging.Query().
Where(logging.Serverid(loggerRequest.Get("serverid"))).
Order(ent.Desc(logging.FieldID)).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "request_data_could_not_found_or_fetched", err)
return
}
sys.SuccessJsonResponse(w, log)
}
// logs a given message array to the database
// message args
// 0 -> commiters id
// 1 -> description
// 2 -> action type
// 3 -> the server logged on
func Logtodb(message []string, client *ent.Client, context context.Context) error {
err := client.Logging.Create().
SetCommiter(message[0]).
SetDescription(message[1]).
SetType(message[2]).
SetServerid(message[3]).
Exec(context)
if err != nil {
return err
}
return nil
}

View File

@ -0,0 +1,134 @@
package punishments
import (
"context"
"encoding/json"
"errors"
"net/http"
"github.com/FrankenBotDev/FrankenAPI/ent"
"github.com/FrankenBotDev/FrankenAPI/ent/punishments"
"github.com/FrankenBotDev/FrankenAPI/pkg/routes/logger"
"github.com/FrankenBotDev/FrankenAPI/pkg/sys"
"github.com/go-chi/chi/v5"
)
func PunRouter() http.Handler {
r := chi.NewRouter()
r.Get("/", getPun)
r.Post("/", createPun)
r.Delete("/", deletePun)
return r
}
// WEB-SYS ONLY WHOLE ROUTE
func createPun(w http.ResponseWriter, r *http.Request) {
punData := sys.ProccessRequest(w, r.Body)
if punData == nil {
return
}
punJson := make(map[string]any)
if punJson["commiterid"] != "" {
if punJson["serverid"].(string) != "" {
if punJson["warnamount"].(string) != "" {
if punJson["actiontype"].(string) != "" {
if punJson["duration"].(string) != "" {
if punJson["reason"].(string) != "" {
json.Unmarshal(punData, &punJson)
err := r.Context().Value(sys.EntClientKey).(*ent.Client).Punishments.Create().
SetServerid(punJson["serverid"].(string)).
SetWarnamount(punJson["warnamount"].(string)).
SetActiontype(punJson["actiontype"].(string)).
SetDuration(punJson["duration"].(string)).
SetReason(punJson["reason"].(string)).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "pun_could_not_be_created", err)
}
logger.Logtodb([]string{punJson["commiterid"].(string), "type: " + punJson["actiontype"].(string) + ", duration: " + punJson["duration"].(string) + ", reason: " + punJson["reason"].(string) + ", warnamount: " + punJson["warnamount"].(string), "puncreate", punJson["serverid"].(string)}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
w.Write([]byte(`{"type":"success", "code":"pun_was_created"}`))
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("reason needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("duration needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("actiontype needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("warnamount needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiter needs to be set"))
}
}
func getPun(w http.ResponseWriter, r *http.Request) {
userdata := r.URL.Query()
if userdata.Get("commiterid") != "" {
if userdata.Get("serverid") != "" {
if userdata.Get("warnamount") != "" {
pun, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Punishments.Query().
Where(punishments.Serverid(userdata.Get("serverid")), punishments.Warnamount(userdata.Get("warnamount"))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_pun", err)
return
}
sys.SuccessJsonResponse(w, pun)
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("warnamount needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_paramert", errors.New("commiterid needs to be set"))
}
}
func deletePun(w http.ResponseWriter, r *http.Request) {
punData := sys.ProccessRequest(w, r.Body)
if punData != nil {
return
}
punJson := make(map[string]any)
if punJson["commiterid"].(string) != "" {
if punJson["serverid"].(string) != "" {
if punJson["warnamount"].(string) != "" {
json.Unmarshal(punData, &punJson)
_, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Punishments.Delete().
Where(punishments.Serverid(punJson["serverid"].(string)), punishments.Warnamount(punJson["warnamount"].(string))).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "pun_could_not_be_created", err)
}
logger.Logtodb([]string{punJson["commiterid"].(string), "warnamount: " + punJson["warnamount"].(string), "punremove", punJson["serverid"].(string)}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
w.Write([]byte(`{"type":"success", "code":"pun_was_removed"}`))
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("warnamount needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_paramert", errors.New("commiterid needs to be set"))
}
}

View File

@ -0,0 +1,433 @@
package settings
import (
"context"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"net/http"
"github.com/FrankenBotDev/FrankenAPI/ent"
"github.com/FrankenBotDev/FrankenAPI/ent/settings"
"github.com/FrankenBotDev/FrankenAPI/ent/socialmedia"
"github.com/FrankenBotDev/FrankenAPI/pkg/routes/logger"
"github.com/FrankenBotDev/FrankenAPI/pkg/sys"
"github.com/go-chi/chi/v5"
)
func SettingsRouter() http.Handler {
r := chi.NewRouter()
r.Get("/", getServerSettings)
r.Post("/", createServerSettings)
r.Put("/", updateServerSettings)
r.Post("/socialmedia", createSocial)
r.Put("/socialmedia", updateSocial)
r.Delete("/socialmedia", deleteSocial)
r.Get("/socialmedia", getSocial)
return r
}
/* ==========================================================
ROUTE DEFINITIONS
=========================================================== */
func createServerSettings(w http.ResponseWriter, r *http.Request) {
// fetch data
settingsJson := make(map[string]any)
settingsData := sys.ProccessRequest(w, r.Body)
if settingsData == nil {
return
}
// process data
err := json.Unmarshal(settingsData, &settingsJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
if settingsJson["commiterid"] != "" {
if settingsJson["serverid"].(string) != "" {
if settingsJson["servername"].(string) != "" {
if settingsJson["ownerid"].(string) != "" {
// error handling and user communication
_, err = r.Context().Value(sys.EntClientKey).(*ent.Client).Settings.Create().SetWordfilter(false).
SetTwitterannounce(false).
SetTwitchannounce(false).
SetStatsprivate(true).
SetStatspagemode("default").
SetStatspage(false).
SetSpamprotection(false).
SetSpamchannel("general").
SetServername(settingsJson["servername"].(string)).
SetServerid(settingsJson["serverid"].(string)).
SetPermtoken("test").
SetOwnerid(settingsJson["ownerid"].(string)).
SetMusic(false).
SetModeration(false).
SetLoggerchannel("general").
SetLogger(false).
SetLinkprotection(false).
SetGreetings(false).
SetGreetermode("image").
SetGreeterchannel("general").
SetAutomatedmoderation(false).
SetApitoken("n/a").
SetApitoggle(false).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "data_could_not_be_added_to_database", errors.New("inserting settings into database failed"))
}
// Send message to the user if transaction could be made
// in this case only usefull for the bot but may be implemented to the webpage once stable implementation exists
logger.Logtodb([]string{"system", "settings for server" + settingsJson["serverid"].(string) + " was have been created", "settingscreate", settingsJson["serverid"].(string)}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
w.Write([]byte(`{"type":"success", "code":"data_was_put_into_the_database"}`))
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("ownerid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("servername needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "mssing_parameter", errors.New("commiterid needs to be set"))
}
}
func updateServerSettings(w http.ResponseWriter, r *http.Request) {
// fetch data
settingsJson := make(map[string]any)
settingsData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("request body seems to be empty"))
}
// process data
err = json.Unmarshal(settingsData, &settingsJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
fmt.Println(settingsJson)
if commiteridStr, ok := settingsJson["commiterid"].(string); ok {
fmt.Println(0)
if serveridStr, ok := settingsJson["serverid"].(string); ok {
fmt.Println(1)
if blacklistBool, ok := settingsJson["blacklist"].(bool); ok {
fmt.Println(2)
if twitchannounceBool, ok := settingsJson["twitchannounce"].(bool); ok {
fmt.Println(3)
if twitterannounceBool, ok := settingsJson["twitteranounce"].(bool); ok {
fmt.Println(4)
if statsprivateBool, ok := settingsJson["statsprivate"].(bool); ok {
fmt.Println(5)
if statspagemodeStr, ok := settingsJson["statspagemode"].(string); ok {
fmt.Println(6)
if statspageBool, ok := settingsJson["statspage"].(bool); ok {
fmt.Println(7)
if spamprotectBool, ok := settingsJson["spamprotect"].(bool); ok {
fmt.Println(8)
if spamchannelStr, ok := settingsJson["spamchannel"].(string); ok {
fmt.Println(9)
if servernameStr, ok := settingsJson["servername"].(string); ok {
fmt.Println(10)
if musicBool, ok := settingsJson["music"].(bool); ok {
fmt.Println(11)
if moderationBool, ok := settingsJson["moderation"].(bool); ok {
fmt.Println(12)
if loggerchannelStr, ok := settingsJson["loggerchannel"].(string); ok {
fmt.Println(13)
if loggerBool, ok := settingsJson["logger"].(bool); ok {
fmt.Println(14)
if linkprotectBool, ok := settingsJson["linkprotect"].(bool); ok {
fmt.Println(15)
if helloBool, ok := settingsJson["greetings"].(bool); ok {
fmt.Println(16)
if greetingstypeStr, ok := settingsJson["greetingtype"].(string); ok {
fmt.Println(17)
if greetingschannelStr, ok := settingsJson["greetingchannel"].(string); ok {
fmt.Println(18)
if automodBool, ok := settingsJson["automod"].(bool); ok {
fmt.Println(19)
if apiBool, ok := settingsJson["apitoggle"].(bool); ok {
fmt.Println(20)
if statsBool, ok := settingsJson["stats"].(bool); ok {
fmt.Println(21)
if anounceChannelStr, ok := settingsJson["announcechannel"].(string); ok {
fmt.Println(21)
fmt.Println(spamprotectBool)
fmt.Println(linkprotectBool)
fmt.Println(blacklistBool)
fmt.Println(apiBool)
_, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Settings.Update().
Where(settings.Serverid(serveridStr)).
SetWordfilter(blacklistBool).
SetTwitterannounce(twitterannounceBool).
SetTwitchannounce(twitchannounceBool).
SetStatsprivate(statsprivateBool).
SetStatspagemode(statspagemodeStr).
SetStatspage(statspageBool).
SetSpamprotection(spamprotectBool).
SetSpamchannel(spamchannelStr).
SetServername(servernameStr).
SetMusic(musicBool).
SetModeration(moderationBool).
SetLoggerchannel(loggerchannelStr).
SetLogger(loggerBool).
SetLinkprotection(linkprotectBool).
SetGreetings(helloBool).
SetGreetermode(greetingstypeStr).
SetGreeterchannel(greetingschannelStr).
SetAutomatedmoderation(automodBool).
SetApitoggle(apiBool).
SetStats(statsBool).
SetAnnouncechannel(anounceChannelStr).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
fmt.Println(err)
http.Error(w, `{"type":"error", "code":"could_update_database"}`, http.StatusInternalServerError)
return
}
logger.Logtodb([]string{commiteridStr, "settings for server: " + serveridStr + " was changed by: " + commiteridStr, "settingschange", serveridStr}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
w.Write([]byte(`{"type":"success", "code":"data_was_updated_in_the_database"}`))
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("announcechannel needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("stats needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("apitoggle needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("automod needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("greetingchannel needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("greetingtype needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("greetings needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("linkprotect needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("logger needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("loggerchannel needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("moderation needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("music needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("servername needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("spamchannel needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("spamprotect needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("statspage needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("statspagemode needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("statsprivate needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("twitchannounce needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("twitteranounce needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("blacklist needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
func getServerSettings(w http.ResponseWriter, r *http.Request) {
settingsQuery := r.URL.Query()
if settingsQuery.Get("commiterid") != "" {
if settingsQuery.Get("serverid") != "" {
// replace with actual api data
user, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Settings.Query().Where(settings.Serverid(settingsQuery.Get("serverid"))).All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("the requested user was not found"))
}
sys.SuccessJsonResponse(w, user)
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
func createSocial(w http.ResponseWriter, r *http.Request) {
// fetch data
settingsJson := make(map[string]any)
settingsData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("could not find data in that request"))
}
// process data
err = json.Unmarshal(settingsData, &settingsJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
if settingsJson["commiterid"].(string) != "" {
if settingsJson["serverid"].(string) != "" {
if settingsJson["identifier"].(string) != "" {
if settingsJson["type"].(string) != "" {
r.Context().Value(sys.EntClientKey).(*ent.Client).Socialmedia.Create().
SetServerid(settingsJson["serverid"].(string)).
SetIdentificator(settingsJson["identifier"].(string)).
SetType(settingsJson["type"].(string)).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
logger.Logtodb([]string{settingsJson["commiterid"].(string), "socialmedia entry for server" + settingsJson["serverid"].(string) + " was added by" + settingsJson["commiterid"].(string), "socialcreate", settingsJson["serverid"].(string)}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
w.Write([]byte(`{"type":"success", "code":"data_was_put_into_the_database"}`))
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("type needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("identifier needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
/* ========================================================
todo: update all below todo comments asap
======================================================== */
// @TODO: actually updating the database
func updateSocial(w http.ResponseWriter, r *http.Request) {
// fetch data
settingsJson := make(map[string]any)
settingsData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("could not find data in that request"))
}
// process data
err = json.Unmarshal(settingsData, &settingsJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
if settingsJson["commiterid"].(string) != "" {
if settingsJson["serverid"].(string) != "" {
if settingsJson["identifier"].(string) != "" {
if settingsJson["type"].(string) != "" {
_, err = r.Context().Value(sys.EntClientKey).(*ent.Client).Socialmedia.Update().
SetServerid(settingsJson["serverid"].(string)).
SetIdentificator(settingsJson["identifier"].(string)).
SetType(settingsJson["type"].(string)).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "database_error", errors.New("could not update the database"))
}
logger.Logtodb([]string{settingsJson["commiterid"].(string), "socialmedia entry for server" + settingsJson["serverid"].(string) + " was updated by" + settingsJson["commiterid"].(string), "socialupdate", settingsJson["serverid"].(string)}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
w.Write([]byte(`{"type":"success", "code":"data_was_put_into_the_database"}`))
}
}
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
// @TODO fetch parameters from request query
func deleteSocial(w http.ResponseWriter, r *http.Request) {
if r.URL.Query().Get("commiterid") != "" {
if r.URL.Query().Get("serverid") != "" {
if r.URL.Query().Get("identifier") != "" {
_, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Socialmedia.Delete().
Where(socialmedia.Serverid(r.URL.Query().Get("serverid")), socialmedia.Identificator(r.URL.Query().Get("identifier"))).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "data_could_not_be_deleted", errors.New("the data requested could not be removed"))
}
w.Write([]byte(`{"type":"success", "code":"data_was_removed_successfully"}`))
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("identifier needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
// @TODO user userdata to manipulate the db query
func getSocial(w http.ResponseWriter, r *http.Request) {
userData := r.URL.Query()
fmt.Println(userData)
if userData.Get("commiterid") != "" {
if userData.Get("serverid") != "" {
if userData.Get("identifer") != "" {
// replace with actual api data
social, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Socialmedia.Query().
Where(socialmedia.Serverid(userData.Get("serverid")), socialmedia.Identificator(userData.Get("identifer"))).All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("could not get the requested user object"))
}
sys.SuccessJsonResponse(w, social)
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("identifier needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}

194
pkg/routes/stats/stats.go Normal file
View File

@ -0,0 +1,194 @@
package stats
import (
"context"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"net/http"
"time"
"github.com/FrankenBotDev/FrankenAPI/ent"
"github.com/FrankenBotDev/FrankenAPI/ent/user"
"github.com/FrankenBotDev/FrankenAPI/pkg/routes/logger"
"github.com/FrankenBotDev/FrankenAPI/pkg/sys"
"github.com/go-chi/chi/v5"
)
// TODO: error handle route properly
func StatsRouter() http.Handler {
r := chi.NewRouter()
r.Post("/user", createUser)
r.Get("/user", getUser)
r.Get("/server", getServer)
r.Put("/user", updateUser)
return r
}
/* ==========================================================
ROUTE DEFINITIONS
=========================================================== */
func createUser(w http.ResponseWriter, r *http.Request) {
// fetch data
userJson := make(map[string]any)
userData, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, `"type":"error", "code":"could_not_find_data_in_request"`, http.StatusInternalServerError)
return
}
// process data
err = json.Unmarshal(userData, &userJson)
if err != nil {
http.Error(w, `{"type":"error", "code":"could_not_proccess_data"}`, http.StatusInternalServerError)
return
}
if userJson["commiterid"].(string) != "" {
if userJson["serverid"].(string) != "" {
if userJson["userid"].(string) != "" {
if userJson["username"].(string) != "" {
// push data to database
_, err = r.Context().Value(sys.EntClientKey).(*ent.Client).User.Create().
SetServerid(userJson["serverid"].(string)).
SetUserid(userJson["userid"].(string)).
SetLevel(1).
SetUsername(userJson["username"].(string)).
SetXp(0).
SetMsgs(0).
SetCreated(time.Now()).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_add_data_to_database", errors.New("data could not be added to the database"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("username needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("userid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
func updateUser(w http.ResponseWriter, r *http.Request) {
// daten fetchen
userData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("the request appears to be empty"))
}
// proccess data
userJson := make(map[string]any)
err = json.Unmarshal(userData, &userJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
if userJson["committerid"].(string) != "" {
if userJson["serverid"].(string) != "" {
if userJson["userid"].(string) != "" {
if levelNum, ok := userJson["level"].(float64); ok {
if xpNum, ok := userJson["xp"].(float64); ok {
if msgsNum, ok := userJson["msgs"].(float64); ok {
_, err := r.Context().Value(sys.EntClientKey).(*ent.Client).User.Update().
Where(user.Serverid(userJson["serverid"].(string)), user.Userid(userJson["userid"].(string))).
SetLevel(int(levelNum)).
SetXp(int(xpNum)).
SetMsgs(int(msgsNum)).
Save(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
fmt.Println(err)
}
logger.Logtodb([]string{
userJson["committerid"].(string),
"Updated User with UserID: " + userJson["userid"].(string),
"User Update",
userJson["serverid"].(string),
}, r.Context().Value(sys.EntClientKey).(*ent.Client),
r.Context().Value(sys.ContextClientKey).(context.Context))
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("msgs needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("xp needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("level needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("userid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
func getUser(w http.ResponseWriter, r *http.Request) {
userData := r.URL.Query()
fmt.Println(userData)
if userData.Get("commiterid") != "" {
if userData.Get("serverid") != "" {
if userData.Get("userid") != "" {
// replace with actual api data
user, err := r.Context().Value(sys.EntClientKey).(*ent.Client).User.Query().
Where(user.Serverid(userData.Get("serverid")), user.Userid(userData.Get("userid"))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("requested user could not be fetched from the database"))
}
sys.SuccessJsonResponse(w, user)
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("userid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}
func getServer(w http.ResponseWriter, r *http.Request) {
serverData := r.URL.Query()
if serverData.Get("commiterid") != "" {
if serverData.Get("serverid") != "" {
// replace with actual api data
user, err := r.Context().Value(sys.EntClientKey).(*ent.Client).User.Query().
Where(user.Serverid(serverData.Get("serverid"))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("requested user could not be fetched from the database"))
}
sys.SuccessJsonResponse(w, user)
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("serverid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_parameter", errors.New("commiterid needs to be set"))
}
}

View File

@ -0,0 +1,332 @@
package support
import (
"context"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"net/http"
"time"
"github.com/FrankenBotDev/FrankenAPI/ent"
"github.com/FrankenBotDev/FrankenAPI/ent/support"
"github.com/FrankenBotDev/FrankenAPI/ent/supportresponse"
"github.com/FrankenBotDev/FrankenAPI/pkg/routes/logger"
"github.com/FrankenBotDev/FrankenAPI/pkg/sys"
"github.com/go-chi/chi/v5"
)
// TODO: error handle route properly
func SupportRouter() http.Handler {
r := chi.NewRouter()
r.Get("/", getTicket)
r.Get("/search", getTicketByID)
r.Post("/", openTicket)
r.Put("/", updateTicket)
r.Delete("/", deleteTicket)
r.Post("/message", writetMessage)
r.Get("/message", getMessages)
r.Get("/message/unread", getUnreadMessages)
return r
}
func getTicket(w http.ResponseWriter, r *http.Request) {
ticketQuery := r.URL.Query()
if ticketQuery.Get("serverid") != "" {
ticket, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Support.Query().
Where(support.Serverid(ticketQuery.Get("serverid")), support.Not(support.Status("closed"))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("requested user could not be fetched from the database"))
}
sys.SuccessJsonResponse(w, ticket)
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("serverid needs to be set"))
}
}
func getTicketByID(w http.ResponseWriter, r *http.Request) {
ticketQuery := r.URL.Query()
if ticketQuery.Get("serverid") != "" {
if ticketQuery.Get("refid") != "" {
// replace with actual api data
ticket, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Support.Query().
Where(support.Serverid(ticketQuery.Get("serverid")), support.Refid(ticketQuery.Get("refid"))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("requested user could not be fetched from the database"))
}
sys.SuccessJsonResponse(w, ticket)
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("refid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("serverid needs to be set"))
}
}
func openTicket(w http.ResponseWriter, r *http.Request) {
// daten fetchen
ticketData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("the request appears to be empty"))
}
// proccess data
ticketJson := make(map[string]any)
err = json.Unmarshal(ticketData, &ticketJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
devRefid := sys.RandStringRunes(16)
if serveridStr, ok := ticketJson["serverid"].(string); ok {
if devRefid != "" {
if titleStr, ok := ticketJson["title"].(string); ok {
if descStr, ok := ticketJson["description"].(string); ok {
if creatorStr, ok := ticketJson["creator"].(string); ok {
// replace with actual api data
err := r.Context().Value(sys.EntClientKey).(*ent.Client).Support.Create().
SetServerid(serveridStr).
SetRefid(devRefid).
SetStatus("open").
SetTitle(titleStr).
SetDescription(descStr).
SetCreator(creatorStr).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("requested user could not be fetched from the database"))
}
logger.Logtodb([]string{
creatorStr,
"Opened Support Ticket with RefiD: " + devRefid,
"Support Ticket Open",
serveridStr,
}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
sys.SuccessJsonResponse(w, "ticket_created")
}
}
}
}
}
}
func updateTicket(w http.ResponseWriter, r *http.Request) {
// daten fetchen
ticketData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("the request appears to be empty"))
}
// proccess data
ticketJson := make(map[string]any)
err = json.Unmarshal(ticketData, &ticketJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
fmt.Println(ticketJson)
if commiteridStr, ok := ticketJson["commiterid"].(string); ok {
fmt.Println(0)
if serveridStr, ok := ticketJson["serverid"].(string); ok {
fmt.Println(1)
if refidStr, ok := ticketJson["refid"].(string); ok {
fmt.Println(2)
if statusStr, ok := ticketJson["status"].(string); ok {
fmt.Println(3)
if titleStr, ok := ticketJson["title"].(string); ok {
fmt.Println(4)
if descStr, ok := ticketJson["description"].(string); ok {
fmt.Println(5)
if creatorStr, ok := ticketJson["creator"].(string); ok {
fmt.Println(6)
// replace with actual api data
err := r.Context().Value(sys.EntClientKey).(*ent.Client).Support.Update().
Where(support.Refid(refidStr), support.Serverid(serveridStr)).
SetServerid(serveridStr).
SetRefid(refidStr).
SetStatus(statusStr).
SetTitle(titleStr).
SetDescription(descStr).
SetCreator(creatorStr).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("requested user could not be fetched from the database"))
}
logger.Logtodb([]string{
commiteridStr,
"Updated Support Ticket with RefiD: " + refidStr,
"Support Ticket Update",
serveridStr,
}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
sys.SuccessJsonResponse(w, "ticket_created")
}
}
}
}
}
}
}
}
func deleteTicket(w http.ResponseWriter, r *http.Request) {
// daten fetchen
ticketData, err := ioutil.ReadAll(r.Body)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_find_data_in_request", errors.New("the request appears to be empty"))
}
// proccess data
ticketJson := make(map[string]any)
err = json.Unmarshal(ticketData, &ticketJson)
if err != nil {
sys.ErrorJsonResponse(w, "could_not_proccess_data", errors.New("request data could not be proccessed"))
}
if commiteridStr, ok := ticketJson["commiterid"].(string); ok {
if serveridStr, ok := ticketJson["serverid"].(string); ok {
if refidStr, ok := ticketJson["refid"].(string); ok {
// replace with actual api data
_, err := r.Context().Value(sys.EntClientKey).(*ent.Client).Support.Delete().
Where(support.Serverid(serveridStr), support.Refid(refidStr)).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "could_not_get_user", errors.New("requested user could not be fetched from the database"))
}
logger.Logtodb([]string{
commiteridStr,
"Removed Support Ticket with RefiD: " + refidStr,
"Support Ticket Remove",
serveridStr,
}, r.Context().Value(sys.EntClientKey).(*ent.Client), r.Context().Value(sys.ContextClientKey).(context.Context))
sys.SuccessJsonResponse(w, "ticket_created")
sys.SuccessJsonResponse(w, "ticket_created")
}
}
}
}
func getMessages(w http.ResponseWriter, r *http.Request) {
tickerResponseQuery := r.URL.Query()
if tickerResponseQuery.Get("refid") != "" {
if tickerResponseQuery.Get("commiterid") != "" {
replies, err := r.Context().Value(sys.EntClientKey).(*ent.Client).SupportResponse.Query().
Where(supportresponse.Refid(tickerResponseQuery.Get("refid"))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "database_error", errors.New("could not get responses from database"))
}
sys.SuccessJsonResponse(w, replies)
} else {
sys.ErrorJsonResponse(w, "missing_params", errors.New("commiterid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_params", errors.New("refid needs to be set"))
}
}
func getUnreadMessages(w http.ResponseWriter, r *http.Request) {
tickerResponseQuery := r.URL.Query()
if tickerResponseQuery.Get("refid") != "" {
if tickerResponseQuery.Get("commiterid") != "" {
replies, err := r.Context().Value(sys.EntClientKey).(*ent.Client).SupportResponse.Query().
Where(supportresponse.Refid(tickerResponseQuery.Get("refid")), supportresponse.Not(supportresponse.Isread(false))).
All(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
sys.ErrorJsonResponse(w, "database_error", errors.New("could not get responses from database"))
}
sys.SuccessJsonResponse(w, replies)
} else {
sys.ErrorJsonResponse(w, "missing_params", errors.New("commiterid needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_params", errors.New("refid needs to be set"))
}
}
func writetMessage(w http.ResponseWriter, r *http.Request) {
// fetch data
ticketResponseJson := make(map[string]any)
ticketResponseData, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, `"type":"error", "code":"could_not_find_data_in_request"`, http.StatusInternalServerError)
return
}
// process data
err = json.Unmarshal(ticketResponseData, &ticketResponseJson)
if err != nil {
http.Error(w, `{"type":"error", "code":"could_not_proccess_data"}`, http.StatusInternalServerError)
return
}
if refidStr, ok := ticketResponseJson["refid"].(string); ok {
fmt.Println(0)
if messageStr, ok := ticketResponseJson["message"].(string); ok {
fmt.Println(1)
if rtcChannelStr, ok := ticketResponseJson["rtcchannel"].(string); ok {
fmt.Println(2)
if writerStr, ok := ticketResponseJson["writer"].(string); ok {
fmt.Println(3)
if isReadBool, ok := ticketResponseJson["isread"].(bool); ok {
fmt.Println(4)
if typeStr, ok := ticketResponseJson["type"].(string); ok {
fmt.Println(5)
err := r.Context().Value(sys.EntClientKey).(*ent.Client).SupportResponse.Create().
SetRefid(refidStr).
SetMessage(messageStr).
SetRtcchannel(rtcChannelStr).
SetWriter(writerStr).
SetIsread(isReadBool).
SetType(typeStr).
SetCreated(time.Now()).
Exec(r.Context().Value(sys.ContextClientKey).(context.Context))
if err != nil {
fmt.Println(err)
sys.ErrorJsonResponse(w, "database_error", errors.New("could not post to database"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("type needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("isread needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("writer need sto e set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("rtcchannel needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("message needs to be set"))
}
} else {
sys.ErrorJsonResponse(w, "missing_param", errors.New("refid needs to be set"))
}
}
/* =====================================================
Websocket Code
===================================================== */
// TODO: move code to this route