diff options
Diffstat (limited to 'backend/handlers')
| -rw-r--r-- | backend/handlers/record.go | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/backend/handlers/record.go b/backend/handlers/record.go index 2338097..ed9250d 100644 --- a/backend/handlers/record.go +++ b/backend/handlers/record.go | |||
| @@ -115,36 +115,28 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 115 | for i, header := range demoFiles { | 115 | for i, header := range demoFiles { |
| 116 | uuid := uuid.New().String() | 116 | uuid := uuid.New().String() |
| 117 | // Upload & insert into demos | 117 | // Upload & insert into demos |
| 118 | err = c.SaveUploadedFile(header, "backend/parser/"+uuid+".dem") | 118 | err = c.SaveUploadedFile(header, "parser/"+uuid+".dem") |
| 119 | if err != nil { | 119 | if err != nil { |
| 120 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordSaveDemoFail, err.Error()) | 120 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordSaveDemoFail, err.Error()) |
| 121 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 121 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 122 | return | 122 | return |
| 123 | } | 123 | } |
| 124 | defer os.Remove("backend/parser/" + uuid + ".dem") | 124 | defer os.Remove("parser/" + uuid + ".dem") |
| 125 | f, err := os.Open("backend/parser/" + uuid + ".dem") | 125 | f, err := os.Open("parser/" + uuid + ".dem") |
| 126 | if err != nil { | 126 | if err != nil { |
| 127 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordOpenDemoFail, err.Error()) | 127 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordOpenDemoFail, err.Error()) |
| 128 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 128 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 129 | return | 129 | return |
| 130 | } | 130 | } |
| 131 | defer f.Close() | 131 | defer f.Close() |
| 132 | file, err := createFile(srv, uuid+".dem", "application/octet-stream", f, os.Getenv("GOOGLE_FOLDER_ID")) | 132 | parserResult, err := parser.ProcessDemo("parser/" + uuid + ".dem") |
| 133 | if err != nil { | ||
| 134 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordCreateDemoFail, err.Error()) | ||
| 135 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | ||
| 136 | return | ||
| 137 | } | ||
| 138 | parserResult, err := parser.ProcessDemo("backend/parser/" + uuid + ".dem") | ||
| 139 | if err != nil { | 133 | if err != nil { |
| 140 | deleteFile(srv, file.Id) | ||
| 141 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordProcessDemoFail, err.Error()) | 134 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordProcessDemoFail, err.Error()) |
| 142 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 135 | c.JSON(http.StatusOK, models.ErrorResponse("Error while processing demo: "+err.Error())) |
| 143 | return | 136 | return |
| 144 | } | 137 | } |
| 145 | if mapID != parserResult.MapID { | 138 | if mapID != parserResult.MapID { |
| 146 | deleteFile(srv, file.Id) | 139 | c.JSON(http.StatusOK, models.ErrorResponse("Demo map does not match selected map id.")) |
| 147 | c.JSON(http.StatusOK, models.ErrorResponse("demo map does not match uploaded map id")) | ||
| 148 | return | 140 | return |
| 149 | } | 141 | } |
| 150 | hostDemoScoreCount = parserResult.PortalCount | 142 | hostDemoScoreCount = parserResult.PortalCount |
| @@ -152,7 +144,6 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 152 | hostSteamID = parserResult.HostSteamID | 144 | hostSteamID = parserResult.HostSteamID |
| 153 | partnerSteamID = parserResult.PartnerSteamID | 145 | partnerSteamID = parserResult.PartnerSteamID |
| 154 | if hostDemoScoreCount == 0 && hostDemoScoreTime == 0 { | 146 | if hostDemoScoreCount == 0 && hostDemoScoreTime == 0 { |
| 155 | deleteFile(srv, file.Id) | ||
| 156 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordProcessDemoFail, err.Error()) | 147 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordProcessDemoFail, err.Error()) |
| 157 | c.JSON(http.StatusOK, models.ErrorResponse("Processing demo went wrong. Please contact a web admin and provide the demo in question.")) | 148 | c.JSON(http.StatusOK, models.ErrorResponse("Processing demo went wrong. Please contact a web admin and provide the demo in question.")) |
| 158 | return | 149 | return |
| @@ -160,22 +151,25 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 160 | if !isCoop { | 151 | if !isCoop { |
| 161 | convertedSteamID := strconv.FormatInt(convertSteamID64(hostSteamID), 10) | 152 | convertedSteamID := strconv.FormatInt(convertSteamID64(hostSteamID), 10) |
| 162 | if convertedSteamID != user.(models.User).SteamID { | 153 | if convertedSteamID != user.(models.User).SteamID { |
| 163 | deleteFile(srv, file.Id) | ||
| 164 | c.JSON(http.StatusOK, models.ErrorResponse(fmt.Sprintf("Host SteamID from demo and request does not match! Check your submission and try again.\nDemo Host SteamID: %s\nRequest Host SteamID: %s", convertedSteamID, user.(models.User).SteamID))) | 154 | c.JSON(http.StatusOK, models.ErrorResponse(fmt.Sprintf("Host SteamID from demo and request does not match! Check your submission and try again.\nDemo Host SteamID: %s\nRequest Host SteamID: %s", convertedSteamID, user.(models.User).SteamID))) |
| 165 | return | 155 | return |
| 166 | } | 156 | } |
| 167 | } else { | 157 | } else { |
| 168 | if parserResult.IsHost && i != 0 { | 158 | if parserResult.IsHost && i != 0 { |
| 169 | deleteFile(srv, file.Id) | ||
| 170 | c.JSON(http.StatusOK, models.ErrorResponse("Given partner demo is a host demo.")) | 159 | c.JSON(http.StatusOK, models.ErrorResponse("Given partner demo is a host demo.")) |
| 171 | return | 160 | return |
| 172 | } | 161 | } |
| 173 | if !parserResult.IsHost && i == 0 { | 162 | if !parserResult.IsHost && i == 0 { |
| 174 | deleteFile(srv, file.Id) | ||
| 175 | c.JSON(http.StatusOK, models.ErrorResponse("Given host demo is a partner demo.")) | 163 | c.JSON(http.StatusOK, models.ErrorResponse("Given host demo is a partner demo.")) |
| 176 | return | 164 | return |
| 177 | } | 165 | } |
| 178 | } | 166 | } |
| 167 | file, err := createFile(srv, uuid+".dem", "application/octet-stream", f, os.Getenv("GOOGLE_FOLDER_ID")) | ||
| 168 | if err != nil { | ||
| 169 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordCreateDemoFail, err.Error()) | ||
| 170 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | ||
| 171 | return | ||
| 172 | } | ||
| 179 | if i == 0 { | 173 | if i == 0 { |
| 180 | hostDemoFileID = file.Id | 174 | hostDemoFileID = file.Id |
| 181 | hostDemoUUID = uuid | 175 | hostDemoUUID = uuid |