diff --git a/server/data/games/067fb1b8-8303-4faa-95d2-1832770a791c/quotes/7f3a2876-b8b1-4b29-88be-70d86e1809e8.json b/server/data/games/067fb1b8-8303-4faa-95d2-1832770a791c/quotes/7f3a2876-b8b1-4b29-88be-70d86e1809e8.json index 0aa9f1f..752ff97 100644 --- a/server/data/games/067fb1b8-8303-4faa-95d2-1832770a791c/quotes/7f3a2876-b8b1-4b29-88be-70d86e1809e8.json +++ b/server/data/games/067fb1b8-8303-4faa-95d2-1832770a791c/quotes/7f3a2876-b8b1-4b29-88be-70d86e1809e8.json @@ -1,4 +1,4 @@ { - "source": "7de2fcfa-6ac0-4ff6-8337-a224effc826d", - "quote": "Ein Diktumanuist ist eine Person, die Wörter erfindet und sie als Selbstzitat getarnt im Internet veröffentlicht." -} + "quote": "Scher dich zum Donnerdrummel!", + "source": "7de2fcfa-6ac0-4ff6-8337-a224effc826d" +} \ No newline at end of file diff --git a/server/src/application/removeQuote.go b/server/src/application/removeQuote.go index 5a5098d..b154209 100644 --- a/server/src/application/removeQuote.go +++ b/server/src/application/removeQuote.go @@ -31,10 +31,10 @@ func (app *Application) RemoveQuote(usr *user.User, w http.ResponseWriter, r *ht return } else { gameDirName := path.Join(app.config.DataDir, "games", gm.GetId()) - quotesFileNameShort := quote.GetId() + ".json" - quotesFileName := path.Join(gameDirName, "quotes", quotesFileNameShort) + quoteFileNameShort := quote.GetId() + ".json" + quoteFileName := path.Join(gameDirName, "quotes", quoteFileNameShort) - if err := os.Remove(quotesFileName); err != nil { + if err := os.Remove(quoteFileName); err != nil { fmt.Printf("%s\n", err) w.WriteHeader(http.StatusForbidden) fmt.Fprintf(w, "forbidden") diff --git a/server/src/application/saveQuote.go b/server/src/application/saveQuote.go index fd5c382..4c474ab 100644 --- a/server/src/application/saveQuote.go +++ b/server/src/application/saveQuote.go @@ -3,6 +3,7 @@ package application import ( "fmt" "net/http" + "path" "sirlab.de/go/knyt/user" ) @@ -23,10 +24,22 @@ func (app *Application) SaveQuote(usr *user.User, w http.ResponseWriter, r *http quoteId := r.URL.Query().Get("id") quoteText := r.URL.Query().Get("quote") - if err := gm.SaveQuote(usr.GetId(), quoteId, quoteText); err != nil { + gameDirName := path.Join(app.config.DataDir, "games", gm.GetId()) + quoteFileNameShort := quoteId + ".json" + quoteFileName := path.Join(gameDirName, "quotes", quoteFileNameShort) + + err2 := gm.SaveQuote( + quoteFileName, + usr.GetId(), + quoteId, + quoteText, + ) + if err2 != nil { fmt.Printf("%s\n", err) w.WriteHeader(http.StatusForbidden) fmt.Fprintf(w, "forbidden") return } + + fmt.Fprintf(w, "ok") } diff --git a/server/src/game/saveQuote.go b/server/src/game/saveQuote.go index b6a168b..ca64a45 100644 --- a/server/src/game/saveQuote.go +++ b/server/src/game/saveQuote.go @@ -4,7 +4,7 @@ import ( "fmt" ) -func (gm *Game) SaveQuote(usrId string, quoteId string, quoteText string) error { +func (gm *Game) SaveQuote(fileName, usrId, quoteId, quoteText string) error { quote, err := gm.getQuoteById(quoteId) if err != nil { return err @@ -14,7 +14,7 @@ func (gm *Game) SaveQuote(usrId string, quoteId string, quoteText string) error return fmt.Errorf("usrId does not match quote source id") } - fmt.Printf("%v\n", quote) + quote.SetQuote(quoteText) - return fmt.Errorf("Game::SaveQuote() not yet implemented") + return quote.Save(fileName) } diff --git a/server/src/quote/quote.go b/server/src/quote/quote.go index f98ebb9..7926f1e 100644 --- a/server/src/quote/quote.go +++ b/server/src/quote/quote.go @@ -31,6 +31,20 @@ func NewQuoteFromFile(fileName string) (*Quote, error) { } } +func (qu *Quote) Save(fileName string) error { + quJson := QuoteJson{ + Quote: qu.quote, + SourceId: qu.sourceId, + } + + quoteJson, err := json.MarshalIndent(quJson, "", "\t") + if err != nil { + return err + } + + return os.WriteFile(fileName, quoteJson, 0777) +} + func (qu *Quote) GetId() string { return qu.id } @@ -43,6 +57,10 @@ func (qu *Quote) GetQuote() string { return qu.quote } +func (qu *Quote) SetQuote(quote string) { + qu.quote = quote +} + func (qu *Quote) IsPlayed() bool { return qu.isPlayed }