-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathScripts.cs
More file actions
118 lines (104 loc) · 3.81 KB
/
Scripts.cs
File metadata and controls
118 lines (104 loc) · 3.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using ScriptBloxApi.LanguageFeatures;
using ScriptBloxApi.Objects;
using static System.Int32;
namespace ScriptBloxApi.Scripts
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
public static class Scripts
{
public enum ScriptCost
{
free,
paid
}
public enum SortBy
{
views,
likeCount,
createdAt,
updatedAt,
dislikeCount
}
public enum Order
{
asc,
desc
}
public static async Task<Results> FetchScriptsAsync(
int? page = 1,
int? max = 20,
ScriptCost? mode = null,
bool? patched = null,
bool? key = null,
bool? universal = null,
bool? verified = null,
SortBy? sortBy = null,
Order? order = null
)
{
(string Key, string Value)[] queryParams =
[
("page", page?.ToString()),
("max", max.InternalClamp(1, 20).ToString()),
("mode", mode?.ToString()),
("patched", patched.GetBoolInt()),
("key", key.GetBoolInt()),
("universal", universal.GetBoolInt()),
("verified", verified.GetBoolInt()),
("sortBy", sortBy?.ToString()),
("order", order?.ToString())
];
FetchResult fetchResult = await Client.Get<FetchResult>("script/fetch", queryParams);
return fetchResult.Result;
}
public static async Task<ScriptData> FetchScriptAsync(string scriptId) => await Client.Get<ScriptData>($"script/{scriptId}", []);
public static async Task<string> FetchRawScriptAsync(string scriptId) => await Client.Get<string>($"script/raw/{scriptId}", []);
public static async Task<IReadOnlyList<Script>> FetchTrendingScriptsAsync()
{
FetchResult fetchResult = await Client.Get<FetchResult>("script/trending", []);
return fetchResult.Result.Scripts;
}
public static async Task<IReadOnlyList<Script>> FetchScriptsFromUser(string username, int? page = 1, int? max = 20)
{
FetchResult fetchResult = await Client.Get<FetchResult>($"user/scripts/{username}", [
("page", page.InternalClamp(1, MaxValue).ToString()),
("max", max.InternalClamp(1, 20).ToString())
]);
return fetchResult.Result.Scripts;
}
public static async Task<Results> SearchScriptsAsync(
string query,
int? page = 1,
int? max = 20,
ScriptCost? mode = null,
bool? patched = null,
bool? key = null,
bool? universal = null,
bool? verified = null,
SortBy? sortBy = null,
Order? order = null,
bool? strict = null
)
{
(string Key, string Value)[] queryParams =
[
("q", query),
("page", page.InternalClamp(1, MaxValue).ToString()),
("max", max.InternalClamp(1, 20).ToString()),
("mode", mode.ToString()),
("patched", patched.GetBoolInt()),
("key", key.GetBoolInt()),
("universal", universal.GetBoolInt()),
("verified", verified.GetBoolInt()),
("sortBy", sortBy.ToString()),
("order", order.ToString()),
("strict", strict.ToString().ToLower())
];
FetchResult fetchResult = await Client.Get<FetchResult>("script/search", queryParams);
return fetchResult.Result;
}
}
}