Skip to content

81 implement guild template api #122

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.javadiscord.jdi.core.api;

import java.util.List;

import com.javadiscord.jdi.core.api.builders.CreateGuildFromTemplateBuilder;
import com.javadiscord.jdi.core.api.builders.CreateGuildTemplateBuilder;
import com.javadiscord.jdi.core.api.builders.ModifyGuildTemplateBuilder;
import com.javadiscord.jdi.core.models.guild.Guild;
import com.javadiscord.jdi.core.models.guild_template.GuildTemplate;
import com.javadiscord.jdi.internal.api.guild_template.*;

public class GuildTemplateRequest {
private final DiscordResponseParser responseParser;
private final long guildId;

public GuildTemplateRequest(DiscordResponseParser responseParser, long guildId) {
this.responseParser = responseParser;
this.guildId = guildId;
}

public AsyncResponse<Guild> createGuildFromTemplate(CreateGuildFromTemplateBuilder builder) {
return responseParser.callAndParse(
Guild.class, builder.build()
);
}

public AsyncResponse<GuildTemplate> createGuildTemplate(CreateGuildTemplateBuilder builder) {
return responseParser.callAndParse(
GuildTemplate.class, builder.guildId(guildId).build()
);
}

public AsyncResponse<GuildTemplate> deleteGuildTemplate(String templateCode) {
return responseParser.callAndParse(
GuildTemplate.class, new DeleteGuildTemplateRequest(guildId, templateCode)
);
}

public AsyncResponse<GuildTemplate> getGuildTemplate(String templateCode) {
return responseParser
.callAndParse(GuildTemplate.class, new GetGuildTemplateRequest(templateCode));
}

public AsyncResponse<List<GuildTemplate>> getGuildTemplates() {
return responseParser
.callAndParseList(GuildTemplate.class, new GetGuildTemplatesRequest(guildId));
}

public AsyncResponse<GuildTemplate> modifyGuildTemplate(ModifyGuildTemplateBuilder builder) {
return responseParser.callAndParse(
GuildTemplate.class, builder.guildId(guildId).build()
);
}

public AsyncResponse<GuildTemplate> syncGuildTemplate(String templateCode) {
return responseParser
.callAndParse(GuildTemplate.class, new SyncGuildTemplateRequest(guildId, templateCode));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.javadiscord.jdi.core.api.builders;

import java.util.Optional;

import com.javadiscord.jdi.internal.api.guild_template.CreateGuildFromTemplateRequest;

public class CreateGuildFromTemplateBuilder {
private final String templateCode;
private final String name;
private Optional<String> icon;

public CreateGuildFromTemplateBuilder(String templateCode, String name) {
this.templateCode = templateCode;
this.name = name;
this.icon = Optional.empty();
}

public CreateGuildFromTemplateBuilder icon(String icon) {
this.icon = Optional.of(icon);
return this;
}

public CreateGuildFromTemplateRequest build() {
return new CreateGuildFromTemplateRequest(templateCode, name, icon);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.javadiscord.jdi.core.api.builders;

import java.util.Optional;

import com.javadiscord.jdi.internal.api.guild_template.CreateGuildTemplateRequest;

public class CreateGuildTemplateBuilder {
private final String name;
private Optional<String> description;

private long guildId;

public CreateGuildTemplateBuilder(String name) {
this.name = name;
this.description = Optional.empty();
}

public CreateGuildTemplateBuilder description(String description) {
this.description = Optional.of(description);
return this;
}

public CreateGuildTemplateBuilder guildId(long guildId) {
this.guildId = guildId;
return this;
}

public CreateGuildTemplateRequest build() {
return new CreateGuildTemplateRequest(guildId, name, description);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.javadiscord.jdi.core.api.builders;

import java.util.Optional;

import com.javadiscord.jdi.internal.api.guild_template.ModifyGuildTemplateRequest;

public class ModifyGuildTemplateBuilder {
private final String templateCode;
private Optional<String> name;
private Optional<String> description;
private long guildId;

public ModifyGuildTemplateBuilder(String templateCode) {
this.templateCode = templateCode;
this.name = Optional.empty();
this.description = Optional.empty();
}

public ModifyGuildTemplateBuilder name(String name) {
this.name = Optional.of(name);
return this;
}

public ModifyGuildTemplateBuilder description(String description) {
this.description = Optional.of(description);
return this;
}

public ModifyGuildTemplateBuilder guildId(long guildId) {
this.guildId = guildId;
return this;
}

public ModifyGuildTemplateRequest build() {
return new ModifyGuildTemplateRequest(guildId, templateCode, name, description);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.javadiscord.jdi.internal.api.guild_template;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import com.javadiscord.jdi.internal.api.DiscordRequest;
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;

public record CreateGuildFromTemplateRequest(
String templateCode,
String name,
Optional<String> icon
) implements DiscordRequest {

@Override
public DiscordRequestBuilder create() {
Map<String, String> body = new HashMap<>();
body.put("name", name);
icon.ifPresent(it -> body.put("icon", it));

return new DiscordRequestBuilder()
.post()
.path("/guilds/templates/%s".formatted(templateCode))
.body(body);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.javadiscord.jdi.internal.api.guild_template;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import com.javadiscord.jdi.internal.api.DiscordRequest;
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;

public record CreateGuildTemplateRequest(
long guildId,
String name,
Optional<String> description
) implements DiscordRequest {

@Override
public DiscordRequestBuilder create() {
Map<String, String> body = new HashMap<>();
body.put("name", name);
description.ifPresent(d -> body.put("description", d));

return new DiscordRequestBuilder()
.post()
.path("/guilds/%s/templates".formatted(guildId))
.body(body);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.javadiscord.jdi.internal.api.guild_template;

import com.javadiscord.jdi.internal.api.DiscordRequest;
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;

public record DeleteGuildTemplateRequest(
long guildId,
String templateCode
) implements DiscordRequest {

@Override
public DiscordRequestBuilder create() {
return new DiscordRequestBuilder()
.delete()
.path("/guilds/%s/templates/%s".formatted(guildId, templateCode));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.javadiscord.jdi.internal.api.guild_template;

import com.javadiscord.jdi.internal.api.DiscordRequest;
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;

public record GetGuildTemplateRequest(String templateCode) implements DiscordRequest {

@Override
public DiscordRequestBuilder create() {
return new DiscordRequestBuilder()
.get()
.path("/guilds/templates/%s".formatted(templateCode));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.javadiscord.jdi.internal.api.guild_template;

import com.javadiscord.jdi.internal.api.DiscordRequest;
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;

public record GetGuildTemplatesRequest(long guildId) implements DiscordRequest {

@Override
public DiscordRequestBuilder create() {
return new DiscordRequestBuilder().get().path("/guilds/%s/templates".formatted(guildId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.javadiscord.jdi.internal.api.guild_template;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

import com.javadiscord.jdi.internal.api.DiscordRequest;
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;

public record ModifyGuildTemplateRequest(
long guildId,
String templateCode,
Optional<String> name,
Optional<String> description
) implements DiscordRequest {

@Override
public DiscordRequestBuilder create() {
Map<String, String> body = new HashMap<>();
name.ifPresent(n -> body.put("name", n));
description.ifPresent(desc -> body.put("description", desc));

return new DiscordRequestBuilder()
.patch()
.path("/guilds/%s/templates/%s".formatted(guildId, templateCode))
.body(body);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.javadiscord.jdi.internal.api.guild_template;

import com.javadiscord.jdi.internal.api.DiscordRequest;
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;

public record SyncGuildTemplateRequest(
long guildId,
String templateCode
) implements DiscordRequest {

@Override
public DiscordRequestBuilder create() {
return new DiscordRequestBuilder()
.put()
.path("/guilds/%s/templates/%s".formatted(guildId, templateCode));
}
}
6 changes: 6 additions & 0 deletions core/src/main/java/com/javadiscord/jdi/core/Guild.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class Guild {
private final EmojiRequest emojiRequest;
private final GuildRequest guildRequest;
private final GuildScheduledEventRequest guildScheduledEventRequest;
private final GuildTemplateRequest guildTemplateRequest;
private final InviteRequest inviteRequest;
private final PollRequest pollRequest;
private final StageRequest stageRequest;
Expand Down Expand Up @@ -43,6 +44,7 @@ public Guild(com.javadiscord.jdi.core.models.guild.Guild guild, Cache cache, Dis
this.guildRequest = new GuildRequest(discordResponseParser, guildId);
this.guildScheduledEventRequest =
new GuildScheduledEventRequest(discordResponseParser, guildId);
this.guildTemplateRequest = new GuildTemplateRequest(discordResponseParser, guildId);
this.inviteRequest = new InviteRequest(discordResponseParser, guildId);
this.pollRequest = new PollRequest(discordResponseParser, guildId);
this.stageRequest = new StageRequest(discordResponseParser, guildId);
Expand Down Expand Up @@ -95,6 +97,10 @@ public GuildScheduledEventRequest scheduledEvent() {
return guildScheduledEventRequest;
}

public GuildTemplateRequest guildTemplate() {
return guildTemplateRequest;
}

public InviteRequest invite() {
return inviteRequest;
}
Expand Down
Loading