Skip to content

Commit 1b48e92

Browse files
2 parents 1943091 + 8723266 commit 1b48e92

File tree

8 files changed

+72
-25
lines changed

8 files changed

+72
-25
lines changed

Code/MethodSystem/Methods/DiscordMethods/CreateDiscordEmbedMethod.cs renamed to Code/MethodSystem/Methods/DiscordMethods/DiscordEmbedMethod.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace SER.Code.MethodSystem.Methods.DiscordMethods;
1111

1212
[UsedImplicitly]
13-
public class CreateDiscordEmbedMethod : ReferenceReturningMethod<CreateDiscordEmbedMethod.DEmbed>, IAdditionalDescription
13+
public class DiscordEmbedMethod : ReferenceReturningMethod<DiscordEmbedMethod.DEmbed>, IAdditionalDescription
1414
{
1515
public class DEmbed : JObject;
1616

@@ -36,15 +36,15 @@ public class DEmbed : JObject;
3636
DefaultValue = new(new Color(0, 0, 0, 0), "none"),
3737
Description = "The vertical sidebar color."
3838
},
39-
new ReferenceArgument<CreateDiscordEmbedAuthorMethod.DEmbedAuthor>("author")
39+
new ReferenceArgument<EmbedAuthorMethod.DEmbedAuthor>("author")
4040
{
4141
DefaultValue = new(null, "none"),
42-
Description = $"Created using {GetFriendlyName(typeof(CreateDiscordEmbedAuthorMethod))}"
42+
Description = $"Created using {GetFriendlyName(typeof(EmbedAuthorMethod))}"
4343
},
44-
new ReferenceArgument<CreateDiscordEmbedFooterMethod.DEmbedFooter>("footer")
44+
new ReferenceArgument<EmbedFooterMethod.DEmbedFooter>("footer")
4545
{
4646
DefaultValue = new(null, "none"),
47-
Description = $"Created using {GetFriendlyName(typeof(CreateDiscordEmbedFooterMethod))}"
47+
Description = $"Created using {GetFriendlyName(typeof(EmbedFooterMethod))}"
4848
},
4949
new TextArgument("thumbnail url")
5050
{
@@ -61,11 +61,11 @@ public class DEmbed : JObject;
6161
DefaultValue = new(null, "none"),
6262
Description = "Makes the title a clickable hyperlink."
6363
},
64-
new ReferenceArgument<CreateDiscordEmbedFieldMethod.DEmbedField>("fields")
64+
new ReferenceArgument<EmbedFieldMethod.DEmbedField>("fields")
6565
{
66-
DefaultValue = new(Array.Empty<CreateDiscordEmbedFieldMethod.DEmbedField>(), "none"),
66+
DefaultValue = new(Array.Empty<EmbedFieldMethod.DEmbedField>(), "none"),
6767
ConsumesRemainingValues = true,
68-
Description = $"List of fields, created using {GetFriendlyName(typeof(CreateDiscordEmbedFieldMethod))}"
68+
Description = $"List of fields, created using {GetFriendlyName(typeof(EmbedFieldMethod))}"
6969
}
7070
];
7171

@@ -86,17 +86,17 @@ public override void Execute()
8686
embed["color"] = (r << 16) | (g << 8) | b;
8787
}
8888

89-
if (Args.GetReference<CreateDiscordEmbedAuthorMethod.DEmbedAuthor>("author") is { } author) embed["author"] = author;
89+
if (Args.GetReference<EmbedAuthorMethod.DEmbedAuthor>("author") is { } author) embed["author"] = author;
9090

91-
if (Args.GetReference<CreateDiscordEmbedFooterMethod.DEmbedFooter>("footer") is { } footer) embed["footer"] = footer;
91+
if (Args.GetReference<EmbedFooterMethod.DEmbedFooter>("footer") is { } footer) embed["footer"] = footer;
9292

9393
if (Args.GetText("thumbnail url") is { } thumbnailUrl) embed["thumbnail"] = new JObject {{"url", thumbnailUrl}};
9494

9595
if (Args.GetText("image url") is { } imageUrl) embed["image"] = new JObject {{"url", imageUrl}};
9696

9797
if (Args.GetText("clickable url") is { } url) embed["url"] = url;
9898

99-
var fields = Args.GetRemainingArguments<CreateDiscordEmbedFieldMethod.DEmbedField, ReferenceArgument<CreateDiscordEmbedFieldMethod.DEmbedField>>("fields");
99+
var fields = Args.GetRemainingArguments<EmbedFieldMethod.DEmbedField, ReferenceArgument<EmbedFieldMethod.DEmbedField>>("fields");
100100
Log.Signal(fields.Length);
101101
if (fields is { Length: > 0 })
102102
{

Code/MethodSystem/Methods/DiscordMethods/CreateDiscordMessageMethod.cs renamed to Code/MethodSystem/Methods/DiscordMethods/DiscordMessageMethod.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace SER.Code.MethodSystem.Methods.DiscordMethods;
1111

1212
[UsedImplicitly]
13-
public class CreateDiscordMessageMethod : ReferenceReturningMethod<CreateDiscordMessageMethod.DMessage>, IAdditionalDescription, ICanError
13+
public class DiscordMessageMethod : ReferenceReturningMethod<DiscordMessageMethod.DMessage>, IAdditionalDescription, ICanError
1414
{
1515
public class DMessage : JObject;
1616

@@ -41,11 +41,11 @@ public class DMessage : JObject;
4141
Description = "Overrides the webhook's default profile picture.",
4242
DefaultValue = new(null, "default")
4343
},
44-
new ReferenceArgument<CreateDiscordEmbedMethod.DEmbed>("embeds")
44+
new ReferenceArgument<DiscordEmbedMethod.DEmbed>("embeds")
4545
{
4646
Description = "An list containing up to 10 rich embed objects.",
4747
// i dont know if we can use both at the same time lmao - andrzej
48-
DefaultValue = new(Array.Empty<CreateDiscordEmbedMethod.DEmbed>(), "none"),
48+
DefaultValue = new(Array.Empty<DiscordEmbedMethod.DEmbed>(), "none"),
4949
ConsumesRemainingValues = true
5050
}
5151
];
@@ -55,7 +55,7 @@ public override void Execute()
5555
var messageContent = Args.GetText("message content").MaybeNull();
5656
var webhookName = Args.GetText("sender name").MaybeNull();
5757
var avatarUrl = Args.GetText("sender avatar url").MaybeNull();
58-
var embeds = Args.GetRemainingArguments<CreateDiscordEmbedMethod.DEmbed, ReferenceArgument<CreateDiscordEmbedMethod.DEmbed>>("embeds");
58+
var embeds = Args.GetRemainingArguments<DiscordEmbedMethod.DEmbed, ReferenceArgument<DiscordEmbedMethod.DEmbed>>("embeds");
5959

6060
DMessage json = new();
6161

Code/MethodSystem/Methods/DiscordMethods/CreateDiscordEmbedAuthorMethod.cs renamed to Code/MethodSystem/Methods/DiscordMethods/EmbedAuthorMethod.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace SER.Code.MethodSystem.Methods.DiscordMethods;
88

99
[UsedImplicitly]
10-
public class CreateDiscordEmbedAuthorMethod : ReferenceReturningMethod<CreateDiscordEmbedAuthorMethod.DEmbedAuthor>
10+
public class EmbedAuthorMethod : ReferenceReturningMethod<EmbedAuthorMethod.DEmbedAuthor>
1111
{
1212
public class DEmbedAuthor : JObject;
1313

Code/MethodSystem/Methods/DiscordMethods/CreateDiscordEmbedFieldMethod.cs renamed to Code/MethodSystem/Methods/DiscordMethods/EmbedFieldMethod.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace SER.Code.MethodSystem.Methods.DiscordMethods;
88

99
[UsedImplicitly]
10-
public class CreateDiscordEmbedFieldMethod : ReferenceReturningMethod<CreateDiscordEmbedFieldMethod.DEmbedField>
10+
public class EmbedFieldMethod : ReferenceReturningMethod<EmbedFieldMethod.DEmbedField>
1111
{
1212
public class DEmbedField : JObject;
1313

Code/MethodSystem/Methods/DiscordMethods/CreateDiscordEmbedFooterMethod.cs renamed to Code/MethodSystem/Methods/DiscordMethods/EmbedFooterMethod.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace SER.Code.MethodSystem.Methods.DiscordMethods;
88

99
[UsedImplicitly]
10-
public class CreateDiscordEmbedFooterMethod : ReferenceReturningMethod<CreateDiscordEmbedFooterMethod.DEmbedFooter>
10+
public class EmbedFooterMethod : ReferenceReturningMethod<EmbedFooterMethod.DEmbedFooter>
1111
{
1212
public class DEmbedFooter : JObject;
1313

Code/MethodSystem/Methods/DiscordMethods/SendDiscordMessageMethod.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using MEC;
33
using SER.Code.ArgumentSystem.Arguments;
44
using SER.Code.ArgumentSystem.BaseArguments;
5+
using SER.Code.Helpers.Exceptions;
56
using SER.Code.MethodSystem.BaseMethods.Synchronous;
67
using SER.Code.MethodSystem.MethodDescriptors;
78
using SER.Code.MethodSystem.Methods.HTTPMethods;
@@ -13,19 +14,26 @@ public class SendDiscordMessageMethod : SynchronousMethod, ICanError
1314
{
1415
public override string Description => "Sends a message using a discord webhook.";
1516

16-
public string[] ErrorReasons => HTTPPostMethod.HttpErrorReasons;
17+
public string[] ErrorReasons =>
18+
[
19+
..HTTPPostMethod.HttpErrorReasons,
20+
"Provided URL is not a valid webhook URL."
21+
];
1722

1823
public override Argument[] ExpectedArguments { get; } =
1924
[
2025
new TextArgument("webhook url"),
21-
new ReferenceArgument<CreateDiscordMessageMethod.DMessage>("message object")
26+
new ReferenceArgument<DiscordMessageMethod.DMessage>("message object")
2227
];
2328

2429
public override void Execute()
2530
{
2631
var webhookUrl = Args.GetText("webhook url");
27-
var messageObject = Args.GetReference<CreateDiscordMessageMethod.DMessage>("message object");
32+
var messageObject = Args.GetReference<DiscordMessageMethod.DMessage>("message object");
33+
34+
if (!webhookUrl.StartsWith("https://discord.com/api/webhooks/"))
35+
throw new ScriptRuntimeError(this, ErrorReasons.Last());
2836

29-
Timing.RunCoroutine(HTTPPostMethod.SendPost(this, webhookUrl, messageObject));
37+
Timing.RunCoroutine(HTTPPostMethod.RequestSend(this, webhookUrl, messageObject));
3038
}
3139
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using JetBrains.Annotations;
2+
using LabApi.Features.Wrappers;
3+
using MEC;
4+
using Newtonsoft.Json.Linq;
5+
using SER.Code.ArgumentSystem.Arguments;
6+
using SER.Code.ArgumentSystem.BaseArguments;
7+
using SER.Code.Helpers.Exceptions;
8+
using SER.Code.MethodSystem.BaseMethods.Synchronous;
9+
using SER.Code.MethodSystem.MethodDescriptors;
10+
using UnityEngine.Networking;
11+
12+
namespace SER.Code.MethodSystem.Methods.HTTPMethods;
13+
14+
[UsedImplicitly]
15+
// ReSharper disable once InconsistentNaming
16+
public class HTTPPatchMethod : SynchronousMethod, ICanError
17+
{
18+
public override string Description => "Sends a PATCH request to a provided URL.";
19+
20+
public override Argument[] ExpectedArguments { get; } =
21+
[
22+
new TextArgument("address"),
23+
new ReferenceArgument<JObject>("json data to patch")
24+
];
25+
26+
public string[] ErrorReasons =>
27+
[
28+
nameof(UnityWebRequest.Result.ConnectionError),
29+
nameof(UnityWebRequest.Result.DataProcessingError),
30+
nameof(UnityWebRequest.Result.ProtocolError)
31+
];
32+
33+
public override void Execute()
34+
{
35+
var address = Args.GetText("address");
36+
var jsonData = Args.GetReference<JObject>("json data to patch");
37+
Timing.RunCoroutine(HTTPPostMethod.RequestSend(this, address, jsonData, "PATCH"));
38+
}
39+
}

Code/MethodSystem/Methods/HTTPMethods/HTTPPostMethod.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ public override void Execute()
3737
var address = Args.GetText("address");
3838
var jsonData = Args.GetReference<JObject>("json data to post");
3939

40-
Timing.RunCoroutine(SendPost(this, address, jsonData));
40+
Timing.RunCoroutine(RequestSend(this, address, jsonData));
4141
}
4242

43-
public static IEnumerator<float> SendPost(Method caller, string url, JObject jsonData)
43+
public static IEnumerator<float> RequestSend(Method caller, string url, JObject jsonData, string method = "POST")
4444
{
45-
using UnityWebRequest request = new UnityWebRequest(url, "POST");
45+
using UnityWebRequest request = new UnityWebRequest(url, method);
4646
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData.ToString());
4747
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
4848
request.downloadHandler = new DownloadHandlerBuffer();

0 commit comments

Comments
 (0)