From 176711a858ecae3f245a9ec039b116b01a3f4ec6 Mon Sep 17 00:00:00 2001 From: Salmonllama Date: Sun, 6 Sep 2020 12:13:01 -0400 Subject: [PATCH 1/3] Added logger --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index ac7d1e7..95a97b5 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ dependencies { implementation 'org.javacord:javacord:3.0.6' implementation 'com.vdurmont:emoji-java:4.0.0' implementation 'com.squareup.okhttp3:okhttp:4.4.0' + implementation 'ch.qos.logback:logback-classic:1.2.3' testImplementation group: 'junit', name: 'junit', version: '4.12' } From 28fc5c202c506e9b5d32314f6629304787362b1d Mon Sep 17 00:00:00 2001 From: Salmonllama Date: Sun, 6 Sep 2020 12:13:23 -0400 Subject: [PATCH 2/3] scape.fashion scaffolding --- .../scapefashion/ScapeFashionConnection.java | 92 +++++++++++++++++++ .../scapefashion/ScapeFashionItem.java | 63 +++++++++++++ .../scapefashion/ScapeFashionResult.java | 32 +++++++ 3 files changed, 187 insertions(+) create mode 100644 src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionConnection.java create mode 100644 src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionItem.java create mode 100644 src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionResult.java diff --git a/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionConnection.java b/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionConnection.java new file mode 100644 index 0000000..947bf7c --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionConnection.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.endpoints.scapefashion; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +public class ScapeFashionConnection { + private final String RS3_REQUEST_URL = "https://api.rune.scape.fashion"; + private final String RS3_LINK_URL = "https://rune.scape.fashion"; + + private final String OSRS_REQUEST_URL = "https://api.scape.fashion"; + private final String OSRS_LINK_URL = "https://scape.fashion"; + + private final String USER_AGENT = "Fashionscape-Bot github.com/salmonllama/fashionscape-bot"; + + private final OkHttpClient client; + private final Request.Builder requestBuilder; + + public ScapeFashionConnection() { + + client = new OkHttpClient().newBuilder().build(); + requestBuilder = new Request.Builder(); + } + + // Uses the color endpoint to search for items + // Returns an object with a list of the top results, and a link redirect to see full list + public JSONArray osrsColor(String color) throws IOException { + String url = OSRS_REQUEST_URL + "/colors/" + encode(color); + System.out.println(url); + + return makeRequest(url); + } + + private void osrsColor(String color, String slot) { + + } + + private void osrsItem(String item) { + + } + + private void osrsItem(String item, String slot) { + + } + + private void rs3Color(String color) { + + } + + private void rs3Color(String color, String slot) { + + } + + private void rs3Item(String item) { + + } + + private void rs3Item(String item, String slot) { + + } + + private JSONArray makeRequest(String url) throws IOException { + // Returns the items JSONObject + Request request = requestBuilder.get().url(url).addHeader("User-Agent", USER_AGENT).build(); + + Response response = client.newCall(request).execute(); + // returns a JSONArray of JSONObjects + System.out.println(response.body().string()); + return new JSONObject(response.body().string()).getJSONArray("items"); + } + + private String encode(String value) throws UnsupportedEncodingException { + return URLEncoder.encode(value, StandardCharsets.UTF_8.toString()); + } + + private ScapeFashionResult extract(JSONObject json) { + + return null; + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionItem.java b/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionItem.java new file mode 100644 index 0000000..d245bbd --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionItem.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.endpoints.scapefashion; + +public class ScapeFashionItem { + private final String name; + private final String slot; + private final String link; + private final String[] colors; + private final float match; + + private ScapeFashionItem(Builder builder) { + this.name = builder.name; + this.slot = builder.slot; + this.link = builder.link; + this.colors = builder.colors; + this.match = builder.match; + } + + public static class Builder { + private String name; + private String slot; + private String link; + private String[] colors; + private float match; + + public Builder() { + + } + + public Builder setName(String name) { + this.name = name; + return this; + } + + public Builder setSlot(String slot) { + this.slot = slot; + return this; + } + + public Builder setLink(String link) { + this.link = link; + return this; + } + + public Builder setColors(String[] colors) { + this.colors = colors; + return this; + } + + public Builder setMatch(float match) { + this.match = match; + return this; + } + + public ScapeFashionItem build() { + return new ScapeFashionItem(this); + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionResult.java b/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionResult.java new file mode 100644 index 0000000..8bc8518 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/endpoints/scapefashion/ScapeFashionResult.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.endpoints.scapefashion; + +import java.util.ArrayList; +import java.util.Collection; + +public class ScapeFashionResult { + private final String link; + private Collection items; + + public ScapeFashionResult(String link) { + this.link = link; + items = new ArrayList<>(); + } + + public ScapeFashionResult addItem(ScapeFashionItem item) { + this.items.add(item); + return this; + } + + public String getLink() { + return link; + } + + public Collection getItems() { + return items; + } +} From c93457123ebf25712d5690fb6d6be396d5c1076a Mon Sep 17 00:00:00 2001 From: Salmonllama Date: Sun, 6 Sep 2020 12:13:34 -0400 Subject: [PATCH 3/3] Testing and logging --- .../fsbot/commands/developer/TestCommand.java | 20 +++++++------------ src/main/resources/logback.xml | 18 +++++++++++++++++ 2 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/logback.xml diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/TestCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/TestCommand.java index 3cac897..a32ef6f 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/developer/TestCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/TestCommand.java @@ -5,18 +5,15 @@ package dev.salmonllama.fsbot.commands.developer; -import dev.salmonllama.fsbot.database.controllers.OutfitController; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; import dev.salmonllama.fsbot.guthix.Command; import dev.salmonllama.fsbot.guthix.CommandContext; import dev.salmonllama.fsbot.guthix.CommandPermission; import dev.salmonllama.fsbot.guthix.PermissionType; -import org.javacord.api.entity.message.Message; -import org.javacord.api.entity.permission.Role; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.stream.Collectors; public class TestCommand extends Command { @Override public String name() { return "Test"; } @@ -28,15 +25,12 @@ public class TestCommand extends Command { @Override public void onCommand(CommandContext ctx) { - Message msg = ctx.getMessage(); + ScapeFashionConnection conn = new ScapeFashionConnection(); - Collection roles = msg.getMentionedRoles(); - - roles.stream().map(Role::getIdAsString).collect(Collectors.toList()).forEach(id -> { - ctx.getServer().ifPresent(server -> { - Role r = server.getRoleById(id).orElse(null); - ctx.reply(r.getMentionTag()); - }); - }); + try { + ctx.reply(conn.osrsColor("#00ff00").toString(2)); + } catch (Exception e) { + ctx.reply(e.getMessage()); + } } } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..7db775f --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,18 @@ + + + + + + + %d{HH:mm:ss.SSS} %boldCyan(%-34.-34thread) %red(%10.10X{jda.shard}) %boldGreen(%-15.-15logger{0}) %highlight(%-6level) %msg%n + + + + + + + +