Skip to content

Commit 0dde938

Browse files
committed
return some more sensible bodies from edit endpoints. also add single submission get
1 parent f2219db commit 0dde938

File tree

6 files changed

+87
-59
lines changed

6 files changed

+87
-59
lines changed

botfest/src/main/kotlin/net/modfest/botfest/Platform.kt

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,11 @@ class PlatformAuthenticated(var client: HttpClient, var discordUser: Snowflake)
165165
}.unwrapErrors().body()
166166
}
167167

168-
suspend fun patchUserData(patch: UserPatchData) {
169-
client.patch("/user/@me") {
168+
suspend fun patchUserData(patch: UserPatchData): UserData {
169+
return client.patch("/user/@me") {
170170
addAuth()
171171
setBody(patch)
172-
}.unwrapErrors()
172+
}.unwrapErrors().body()
173173
}
174174

175175
suspend fun addMinecraft(username: String): MinecraftEditResponse {
@@ -198,23 +198,23 @@ class PlatformAuthenticated(var client: HttpClient, var discordUser: Snowflake)
198198
}.unwrapErrors().body()
199199
}
200200

201-
suspend fun editSubmissionData(eventId: String, subId: String, edit: SubmissionPatchData) {
202-
client.patch("/event/$eventId/submission/$subId") {
201+
suspend fun editSubmissionData(eventId: String, subId: String, edit: SubmissionPatchData): SubmissionResponseData {
202+
return client.patch("/event/$eventId/submission/$subId") {
203203
addAuth()
204204
setBody(edit)
205-
}.unwrapErrors()
205+
}.unwrapErrors().body()
206206
}
207207

208-
suspend fun updateSubmissionVersion(eventId: String, subId: String) {
209-
client.put("/event/$eventId/submission/$subId/updateVersion") {
208+
suspend fun updateSubmissionVersion(eventId: String, subId: String): SubmissionResponseData {
209+
return client.put("/event/$eventId/submission/$subId/updateVersion") {
210210
addAuth()
211-
}.unwrapErrors()
211+
}.unwrapErrors().body()
212212
}
213213

214-
suspend fun updateSubmissionMeta(eventId: String, subId: String) {
215-
client.put("/event/$eventId/submission/$subId/updateMeta") {
214+
suspend fun updateSubmissionMeta(eventId: String, subId: String): SubmissionResponseData {
215+
return client.put("/event/$eventId/submission/$subId/updateMeta") {
216216
addAuth()
217-
}.unwrapErrors()
217+
}.unwrapErrors().body()
218218
}
219219

220220
suspend fun deleteSubmission(eventId: String, subId: String) {
@@ -223,35 +223,35 @@ class PlatformAuthenticated(var client: HttpClient, var discordUser: Snowflake)
223223
}.unwrapErrors()
224224
}
225225

226-
suspend fun leaveSubmission(eventId: String, subId: String) {
227-
client.delete("/event/$eventId/submission/$subId/authors/@me") {
226+
suspend fun leaveSubmission(eventId: String, subId: String): SubmissionResponseData {
227+
return client.delete("/event/$eventId/submission/$subId/authors/@me") {
228228
addAuth()
229-
}.unwrapErrors()
229+
}.unwrapErrors().body()
230230
}
231231

232-
suspend fun inviteSubmissionAuthor(eventId: String, subId: String, user: String) {
233-
client.put("/event/$eventId/submission/$subId/authors/$user") {
232+
suspend fun inviteSubmissionAuthor(eventId: String, subId: String, user: String): SubmissionResponseData {
233+
return client.put("/event/$eventId/submission/$subId/authors/$user") {
234234
addAuth()
235-
}.unwrapErrors()
235+
}.unwrapErrors().body()
236236
}
237237

238-
suspend fun editSubmissionImage(eventId: String, subId: String, type: String, url: String) {
239-
client.patch("/event/$eventId/submission/$subId/image/$type") {
238+
suspend fun editSubmissionImage(eventId: String, subId: String, type: String, url: String): SubmissionResponseData {
239+
return client.patch("/event/$eventId/submission/$subId/image/$type") {
240240
addAuth()
241241
setBody(url)
242-
}.unwrapErrors()
242+
}.unwrapErrors().body()
243243
}
244244

245-
suspend fun registerMe(event: EventData) {
246-
client.put("/event/"+event.id+"/registrations/dc:"+discordUser.value) {
245+
suspend fun registerMe(event: EventData): UserData {
246+
return client.put("/event/"+event.id+"/registrations/dc:"+discordUser.value) {
247247
addAuth()
248-
}.unwrapErrors()
248+
}.unwrapErrors().body()
249249
}
250250

251-
suspend fun unregisterMe(event: EventData) {
252-
client.delete("/event/"+event.id+"/registrations/dc:"+discordUser.value) {
251+
suspend fun unregisterMe(event: EventData): UserData {
252+
return client.delete("/event/"+event.id+"/registrations/dc:"+discordUser.value) {
253253
addAuth()
254-
}.unwrapErrors()
254+
}.unwrapErrors().body()
255255
}
256256
}
257257

botfest/src/main/kotlin/net/modfest/botfest/extensions/SubmissionCommands.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -401,16 +401,14 @@ class SubmissionCommands : Extension(), KordExKoinComponent {
401401
)
402402
}
403403
} else {
404-
platform.withAuth(this.user).updateSubmissionVersion(curEvent, subId)
405-
406-
val updatedSubmission = platform.getUserSubmissions(this.user.id).find { it.id == subId }
404+
val updatedSubmission = platform.withAuth(this.user).updateSubmissionVersion(curEvent, subId)
407405

408406
ackEphemeral {
409407
content = Translations.Commands.Submission.Update.Version.Response.success
410408
.withContext(this@action)
411409
.translateNamed(
412410
"subId" to subId,
413-
"versionId" to (updatedSubmission?.platform?.inner as Modrinth).versionId
411+
"versionId" to (updatedSubmission.platform.inner as Modrinth).versionId
414412
)
415413
}
416414
}

platform_api/src/main/java/net/modfest/platform/controller/EventController.java

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,16 @@ public EventData getEvent(@PathVariable String id) {
4848
}
4949

5050
@PutMapping("/event/{id}/registrations/{userId}")
51-
public void register(@PathVariable String id, @PathVariable String userId) {
52-
setRegistration(id, userId, true);
51+
public UserData register(@PathVariable String id, @PathVariable String userId) {
52+
return setRegistration(id, userId, true);
5353
}
5454

5555
@DeleteMapping("/event/{id}/registrations/{userId}")
56-
public void unregister(@PathVariable String id, @PathVariable String userId) {
57-
setRegistration(id, userId, false);
56+
public UserData unregister(@PathVariable String id, @PathVariable String userId) {
57+
return setRegistration(id, userId, false);
5858
}
5959

60-
public void setRegistration(@PathVariable String id, @RequestBody String userId, boolean registered) {
60+
private UserData setRegistration(@PathVariable String id, @RequestBody String userId, boolean registered) {
6161
var event = getEvent(id);
6262
// Get the user as if we were requesting them from /user/{id}
6363
var user = userController.getSingleUser(userId);
@@ -80,9 +80,16 @@ public void setRegistration(@PathVariable String id, @RequestBody String userId,
8080
if (!self && !can_others) {
8181
throw new ResponseStatusException(HttpStatus.FORBIDDEN,
8282
registered ? "You don't have permissions to register people other than yourself"
83-
: "You don't have permissions to unregister people other than yourself");
83+
: "You don't have permissions to unregister people other than yourself");
8484
}
85-
eventService.setRegistered(event, user, registered);
85+
return eventService.setRegistered(event, user, registered);
86+
}
87+
88+
@GetMapping("/event/{eventId}/submission/{subId}")
89+
public SubmissionResponseData getSingleSubmission(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId) {
90+
return service.addResponseInfo(
91+
request, service.getSubmission(eventId, subId)
92+
);
8693
}
8794

8895
@GetMapping("/event/{eventId}/submissions")
@@ -152,7 +159,7 @@ public SubmissionResponseData makeSubmissionModrinth(HttpServletRequest request,
152159
}
153160

154161
@PatchMapping("/event/{eventId}/submission/{subId}")
155-
public void editSubmissionData(@PathVariable String eventId, @PathVariable String subId, @RequestBody SubmissionPatchData editData) {
162+
public void editSubmissionData(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId, @RequestBody SubmissionPatchData editData) {
156163
getEvent(eventId);
157164
var submission = service.getSubmission(eventId, subId);
158165
if (submission == null) {
@@ -168,7 +175,7 @@ public void editSubmissionData(@PathVariable String eventId, @PathVariable Strin
168175
}
169176

170177
@PutMapping("/event/{eventId}/submission/{subId}/updateVersion")
171-
public void updateSubmissionVersion(@PathVariable String eventId, @PathVariable String subId) {
178+
public SubmissionResponseData updateSubmissionVersion(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId) {
172179
getEvent(eventId);
173180
var submission = service.getSubmission(eventId, subId);
174181
if (submission == null) {
@@ -180,11 +187,14 @@ public void updateSubmissionVersion(@PathVariable String eventId, @PathVariable
180187
"You do not have permissions to edit this data");
181188
}
182189

183-
service.updateSubmissionVersion(submission);
190+
return service.addResponseInfo(
191+
request,
192+
service.updateSubmissionVersion(submission)
193+
);
184194
}
185195

186196
@PutMapping("/event/{eventId}/submission/{subId}/updateMeta")
187-
public void updateSubmissionMeta(@PathVariable String eventId, @PathVariable String subId) {
197+
public SubmissionResponseData updateSubmissionMeta(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId) {
188198
getEvent(eventId);
189199
var submission = service.getSubmission(eventId, subId);
190200
if (submission == null) {
@@ -196,11 +206,14 @@ public void updateSubmissionMeta(@PathVariable String eventId, @PathVariable Str
196206
"You do not have permissions to edit this data");
197207
}
198208

199-
service.updateSubmissionMeta(submission);
209+
return service.addResponseInfo(
210+
request,
211+
service.updateSubmissionMeta(submission)
212+
);
200213
}
201214

202215
@DeleteMapping("/event/{eventId}/submission/{subId}/authors/{userId}")
203-
public void deleteSubmissionAuthor(@PathVariable String eventId, @PathVariable String subId, @PathVariable String userId) {
216+
public SubmissionResponseData deleteSubmissionAuthor(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId, @PathVariable String userId) {
204217
getEvent(eventId);
205218
var submission = service.getSubmission(eventId, subId);
206219
if (submission == null) {
@@ -227,11 +240,13 @@ public void deleteSubmissionAuthor(@PathVariable String eventId, @PathVariable S
227240
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "You may not edit this user");
228241
}
229242

230-
service.leaveSubmission(submission, user);
243+
return service.addResponseInfo(
244+
request, service.leaveSubmission(submission, user)
245+
);
231246
}
232247

233248
@PutMapping("/event/{eventId}/submission/{subId}/authors/{userId}")
234-
public void addSubmissionAuthor(@PathVariable String eventId, @PathVariable String subId, @PathVariable String userId) {
249+
public SubmissionResponseData addSubmissionAuthor(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId, @PathVariable String userId) {
235250
getEvent(eventId);
236251
var submission = service.getSubmission(eventId, subId);
237252
if (submission == null) {
@@ -250,11 +265,13 @@ public void addSubmissionAuthor(@PathVariable String eventId, @PathVariable Stri
250265
"You cannot add a user that's already in a submission");
251266
}
252267

253-
service.addSubmissionAuthor(submission, user);
268+
return service.addResponseInfo(
269+
request, service.addSubmissionAuthor(submission, user)
270+
);
254271
}
255272

256273
@PatchMapping("/event/{eventId}/submission/{subId}/image/{type}")
257-
public void editSubmissionImage(@PathVariable String eventId, @PathVariable String subId, @PathVariable String type, @RequestBody String url) {
274+
public SubmissionResponseData editSubmissionImage(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId, @PathVariable String type, @RequestBody String url) {
258275
getEvent(eventId);
259276
var submission = service.getSubmission(eventId, subId);
260277
if (submission == null) {
@@ -269,14 +286,18 @@ public void editSubmissionImage(@PathVariable String eventId, @PathVariable Stri
269286
var typeEnum = switch (type) {
270287
case "icon" -> ImageService.SubmissionImageType.ICON;
271288
case "screenshot" -> ImageService.SubmissionImageType.SCREENSHOT;
272-
case null, default -> throw new IllegalArgumentException("Invalid type "+type);
289+
case null, default -> throw new IllegalArgumentException("Invalid type " + type);
273290
};
274291

275292
imageService.downloadSubmissionImage(url, new SubmissionRepository.SubmissionId(eventId, subId), typeEnum);
293+
294+
return service.addResponseInfo(
295+
request, service.getSubmission(eventId, subId)
296+
);
276297
}
277298

278299
@DeleteMapping("/event/{eventId}/submission/{subId}")
279-
public void deleteSubmission(@PathVariable String eventId, @PathVariable String subId) {
300+
public void deleteSubmission(HttpServletRequest request, @PathVariable String eventId, @PathVariable String subId) {
280301
getEvent(eventId);
281302
var submission = service.getSubmission(eventId, subId);
282303
if (submission == null) {

platform_api/src/main/java/net/modfest/platform/controller/UserController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public List<SubmissionResponseData> getUserSubmissions(HttpServletRequest reques
141141
}
142142

143143
@PatchMapping("/user/{id}")
144-
public void editUserData(@PathVariable String id, @RequestBody UserPatchData data) {
144+
public UserData editUserData(@PathVariable String id, @RequestBody UserPatchData data) {
145145
var user = getSingleUser(id);
146146

147147
// Check permissions
@@ -168,6 +168,7 @@ public void editUserData(@PathVariable String id, @RequestBody UserPatchData dat
168168
}
169169

170170
service.save(newUser);
171+
return newUser;
171172
}
172173

173174
@PutMapping("/user/{id}/minecraft/{username}")
@@ -208,7 +209,7 @@ public MinecraftEditResponse deleteUserMinecraft(@PathVariable String id, @PathV
208209

209210
@PostMapping("/admin/update_user")
210211
@RequiresPermissions(Permissions.Users.FORCE_EDIT)
211-
public void forceUpdateUser(@RequestBody UserData data) {
212+
public UserData forceUpdateUser(@RequestBody UserData data) {
212213
var subject = SecurityUtils.getSubject();
213214
var edit_others = subject.isPermitted(Permissions.Users.EDIT_OTHERS);
214215
var owns = PermissionUtils.owns(subject, data);
@@ -218,5 +219,6 @@ public void forceUpdateUser(@RequestBody UserData data) {
218219
}
219220

220221
service.save(data);
222+
return data;
221223
}
222224
}

platform_api/src/main/java/net/modfest/platform/service/EventService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,10 @@ public boolean canUnregister(EventData event, UserData user) {
5959
* Forcibly sets a user to be registered/unregistered.
6060
* WARNING: Does not take into account the phase!
6161
*/
62-
public void setRegistered(EventData event, UserData user, boolean registered) {
63-
userService.save(user.withRegistration(event, registered));
62+
public UserData setRegistered(EventData event, UserData user, boolean registered) {
63+
UserData newUser = user.withRegistration(event, registered);
64+
userService.save(newUser);
65+
return newUser;
6466
}
6567

6668
public void fixRegistrationData(EventData event) {

platform_api/src/main/java/net/modfest/platform/service/SubmissionService.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public SubmissionData getSubmission(String eventId, String subId) {
3535
return submissionRepository.get(new SubmissionRepository.SubmissionId(eventId, subId));
3636
}
3737

38-
public void editSubmission(SubmissionData data, SubmissionPatchData edit) {
38+
public SubmissionData editSubmission(SubmissionData data, SubmissionPatchData edit) {
3939
if (edit.name() != null) {
4040
data = data.withName(edit.name());
4141
}
@@ -62,9 +62,10 @@ public void editSubmission(SubmissionData data, SubmissionPatchData edit) {
6262
}
6363
}
6464
submissionRepository.save(data);
65+
return getSubmission(data.event(), data.id());
6566
}
6667

67-
public void updateSubmissionVersion(SubmissionData data) {
68+
public SubmissionData updateSubmissionVersion(SubmissionData data) {
6869
if (!(data.platform().inner() instanceof SubmissionData.AssociatedData.Modrinth mr)) {
6970
throw new IllegalArgumentException("Update only works for modrinth submissions!");
7071
}
@@ -85,9 +86,10 @@ public void updateSubmissionVersion(SubmissionData data) {
8586
));
8687

8788
submissionRepository.save(newData);
89+
return getSubmission(newData.event(), newData.id());
8890
}
8991

90-
public void updateSubmissionMeta(SubmissionData data) {
92+
public SubmissionData updateSubmissionMeta(SubmissionData data) {
9193
if (!(data.platform().inner() instanceof SubmissionData.AssociatedData.Modrinth mr)) {
9294
throw new IllegalArgumentException("Update only works for modrinth submissions!");
9395
}
@@ -111,16 +113,19 @@ public void updateSubmissionMeta(SubmissionData data) {
111113
var newData = data.withName(project.title).withDescription(project.description).withSource(project.sourceUrl);
112114

113115
submissionRepository.save(newData);
116+
return getSubmission(newData.event(), newData.id());
114117
}
115118

116-
public void leaveSubmission(SubmissionData data, UserData author) {
119+
public SubmissionData leaveSubmission(SubmissionData data, UserData author) {
117120
data.authors().remove(author.id());
118121
submissionRepository.save(data);
122+
return data;
119123
}
120124

121-
public void addSubmissionAuthor(SubmissionData data, UserData author) {
125+
public SubmissionData addSubmissionAuthor(SubmissionData data, UserData author) {
122126
data.authors().add(author.id());
123127
submissionRepository.save(data);
128+
return data;
124129
}
125130

126131
public void deleteSubmission(String eventId, String subId) {

0 commit comments

Comments
 (0)