This repository was archived by the owner on Aug 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 67
/
Copy pathHttpProxyService.lua
184 lines (143 loc) · 3.61 KB
/
HttpProxyService.lua
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
local HttpProxyService = {}
local HttpService = game:GetService("HttpService")
local Url = "" -- Your URL here. Example: https://app-name-here.herokuapp.com (Without '/' at the end)
function IsTable(Object)
if typeof(Object) == "table" then
return true
else
return false
end
end
function GetUrl(Method, Link, Password)
return HttpProxyService:FormatParams(Url .. Method, {
password = Password,
url = HttpService:UrlEncode(Link)
})
end
function HttpProxyService:New(Password)
local Functions = {}
function Functions:GetAsync(Link, Decode, FakeHeaders)
if FakeHeaders == nil then
FakeHeaders = {}
end
if IsTable(FakeHeaders) then
FakeHeaders = HttpService:JSONEncode(FakeHeaders)
end
local Response = HttpService:RequestAsync({
Url = GetUrl("/get", Link, Password),
Method = "POST",
Headers = {
["Content-Type"] = "application/json"
},
Body = FakeHeaders
}).Body
local DecodedResponse = HttpService:JSONDecode(Response)
if DecodedResponse.error then
warn(DecodedResponse.error.message)
return DecodedResponse
end
if Decode == nil or Decode then
return DecodedResponse
else
return Response
end
end
function Functions:PostAsync(Link, Decode, Data, Headers)
local Body = HttpService:JSONEncode({
Data = Data or {},
Headers = Headers or {}
})
local Response = HttpService:RequestAsync({
Url = GetUrl("/post", Link, Password),
Method = "POST",
Headers = {
["Content-Type"] = "application/json"
},
Body = Body
}).Body
local DecodedResponse = HttpService:JSONDecode(Response)
if DecodedResponse.error then
warn(DecodedResponse.error.message)
return DecodedResponse
end
if Decode == nil or Decode then
return DecodedResponse
else
return Response
end
end
function Functions:PatchAsync(Link, Decode, Data, Headers)
local Body = HttpService:JSONEncode({
Data = Data or {},
Headers = Headers or {}
})
local Response = HttpService:RequestAsync({
Url = GetUrl("/patch", Link, Password),
Method = "POST",
Headers = {
["Content-Type"] = "application/json"
},
Body = Body
}).Body
local DecodedResponse = HttpService:JSONDecode(Response)
if DecodedResponse.error then
warn(DecodedResponse.error.message)
return DecodedResponse
end
if Decode == nil or Decode then
return DecodedResponse
else
return Response
end
end
function Functions:DeleteAsync(Link, Decode, FakeHeaders)
if FakeHeaders == nil then
FakeHeaders = {}
end
if IsTable(FakeHeaders) then
FakeHeaders = HttpService:JSONEncode(FakeHeaders)
end
local Response = HttpService:RequestAsync({
Url = GetUrl("/delete", Link, Password),
Method = "POST",
Headers = {
["Content-Type"] = "application/json"
},
Body = FakeHeaders
}).Body
local DecodedResponse = HttpService:JSONDecode(Response)
if DecodedResponse.error then
warn(DecodedResponse.error.message)
return DecodedResponse
end
if Decode == nil or Decode then
return DecodedResponse
else
return Response
end
end
return Functions
end
function HttpProxyService:FormatParams(Link, Params)
if Params == nil then
Params = {}
end
local First = true
for Key, Value in pairs(Params) do
if First == true then
Link = Link .. "?" .. Key .. "=" .. Value
First = false
else
Link = Link .. "&" .. Key .. "=" .. Value
end
end
return Link
end
local Proxy = newproxy(true)
local metatable = getmetatable(Proxy)
metatable.__newindex = function()
error("This ModuleScript is read-only.")
end
metatable.__index = HttpProxyService
metatable.__metatable = "Metatable is locked."
return Proxy