From 13fd148f9904fa3b250d4f8a149d3e2e99400247 Mon Sep 17 00:00:00 2001 From: J-Man775 Date: Sun, 3 Jul 2022 14:39:15 +0200 Subject: [PATCH 1/6] Work with new beta API --- src/ServerScriptService/MainModule.lua | 173 +++---------------------- 1 file changed, 19 insertions(+), 154 deletions(-) diff --git a/src/ServerScriptService/MainModule.lua b/src/ServerScriptService/MainModule.lua index fcbd35d..105a02f 100644 --- a/src/ServerScriptService/MainModule.lua +++ b/src/ServerScriptService/MainModule.lua @@ -1,167 +1,32 @@ local DowntimeService = {} local HttpService = game:GetService("HttpService") -local sumurl = "https://raw.githubusercontent.com/Status-Plus/StatusPlus/master/history/summary.json" +local StatSummary = "https://api.statusplus.xyz/status" -function ReturnTableThroughSlug(slug, data) +function DowntimeService.statusFromAlias(alias) + local jsonData = HttpService:GetAsync(StatSummary) + local data = HttpService:JSONDecode(jsonData) if data then - for i, value in ipairs(data) do - if value["slug"] == slug then - return value + for _, apiTable in ipairs(data) do + for _, apiAlias in ipairs(apiTable.aliases) do + if apiAlias == alias then + return apiTable.status + end end end end end -function DowntimeService.GetSiteStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("roblox-site", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetDevForumStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("roblox-devforum", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetDevHubStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("roblox-devhub", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetAvatarAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("avatar-api-endpoint", Data) - - return Table.status -end - -function DowntimeService.GetBadgesAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("badges-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetCDNAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("cdn-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetCatalogAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("catalog-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetDatastoreAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("datastore-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - - -function DowntimeService.GetDevelopAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("develop-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetFriendsAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("friends-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetGameJoinAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("game-join-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetGroupsAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("groups-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetInventoryAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("inventory-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetTextFilterAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("text-filter-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" -end - -function DowntimeService.GetThumbnailsAPIStatus() - - local GetStatus = HttpService:GetAsync(sumurl) - - local Data = HttpService:JSONDecode(GetStatus) - local Table = ReturnTableThroughSlug("thumbnails-api-endpoint", Data) - - return Table.status -- Will return "up", "degraded" or "down" +function DowntimeService.statusFromName(name) + local jsonData = HttpService:GetAsync(StatSummary) + local data = HttpService:JSONDecode(jsonData) + if data then + for _, apiTable in ipairs(data) do + if apiTable.name == name then + return apiTable.status + end + end + end end return DowntimeService From 8411826818c004638b7238acd602f8d28d9874c6 Mon Sep 17 00:00:00 2001 From: J-Man775 Date: Sun, 3 Jul 2022 14:39:37 +0200 Subject: [PATCH 2/6] Update examples --- src/ServerScriptService/MainSystem.server.lua | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/ServerScriptService/MainSystem.server.lua b/src/ServerScriptService/MainSystem.server.lua index d91cab9..a2aa15a 100644 --- a/src/ServerScriptService/MainSystem.server.lua +++ b/src/ServerScriptService/MainSystem.server.lua @@ -4,23 +4,21 @@ local Players = game:GetService("Players") -- Example #1: Kicking Players if Datastores are down. Players.PlayerAdded:Connect(function(player) - if DowntimeService:GetDatastoreAPIStatus() == "down" then - player:Kick("Datastores are currently down. To prevent critical errors we have kicked you. If this issue persits please contact the game owner. =") - end + if DowntimeService.statusFromAlias("datastore")== "Down" then + player:Kick("Datastores are currently down. To prevent critical errors we have kicked you. If this issue persits please contact the game owner. =") + end end) --- Example #2 Printing latest tests if something is down or not. +-- Example #2 Printing the Roblox website's status every 5 minutes. while true do - -if DowntimeService:GetSiteStatus() == "down" then - - warn("Roblox Website is Currently Down! Please be patient while Roblox works on a fix! :)") - -elseif DowntimeService.GetSiteStatus() == "degraded" then - print("Roblox Website is Currently slow! Please be patient while Roblox works on it! :)") -elseif DowntimeService:GetSiteStatus() == "up" then - print("Roblox website is currently up!") + local siteStatus = DowntimeService.statusFromAlias("site") + if siteStatus == "Down" then + warn("Roblox Website is Currently Down! Please be patient while Roblox works on a fix! :)") + elseif siteStatus == "Degraded" then + print("Roblox Website is Currently slow! Please be patient while Roblox works on it! :)") + elseif siteStatus == "Up" then + print("Roblox website is currently up!") + end + wait(300) end -wait(300) -end \ No newline at end of file From 3cebebf59d5159e068b61ac8ee156ddc0d7d3b59 Mon Sep 17 00:00:00 2001 From: J-Man775 Date: Mon, 4 Jul 2022 18:49:40 +0200 Subject: [PATCH 3/6] Update MainSystem.server.lua --- src/ServerScriptService/MainSystem.server.lua | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ServerScriptService/MainSystem.server.lua b/src/ServerScriptService/MainSystem.server.lua index a2aa15a..439395e 100644 --- a/src/ServerScriptService/MainSystem.server.lua +++ b/src/ServerScriptService/MainSystem.server.lua @@ -1,23 +1,27 @@ local DowntimeService = require(6317978171) -- Or require by using the file path. (Requiring by ID is better for quicker updates.) local Players = game:GetService("Players") --- Example #1: Kicking Players if Datastores are down. +-- Example #1: Kicking Players if Datastores are down and the variable is set to true. + +local kickPlayers = true Players.PlayerAdded:Connect(function(player) - if DowntimeService.statusFromAlias("datastore")== "Down" then - player:Kick("Datastores are currently down. To prevent critical errors we have kicked you. If this issue persits please contact the game owner. =") + if DowntimeService.statusFromAlias("datastore"):lower() == "down" then + if kickPlayers then + player:Kick("Datastores are currently down. To prevent critical errors we have kicked you. If this issue persits please contact the game owner. =") + end end end) -- Example #2 Printing the Roblox website's status every 5 minutes. while true do - local siteStatus = DowntimeService.statusFromAlias("site") - if siteStatus == "Down" then + local siteStatus = DowntimeService.statusFromAlias("site"):lower() + if siteStatus == "down" then warn("Roblox Website is Currently Down! Please be patient while Roblox works on a fix! :)") - elseif siteStatus == "Degraded" then + elseif siteStatus == "degraded" then print("Roblox Website is Currently slow! Please be patient while Roblox works on it! :)") - elseif siteStatus == "Up" then + elseif siteStatus == "up" then print("Roblox website is currently up!") end wait(300) From cd5608ac2f17f9914a1c9a59fc2c8fcbc6749a4c Mon Sep 17 00:00:00 2001 From: J-Man775 Date: Mon, 4 Jul 2022 18:56:53 +0200 Subject: [PATCH 4/6] Update MainSystem.server.lua --- src/ServerScriptService/MainSystem.server.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ServerScriptService/MainSystem.server.lua b/src/ServerScriptService/MainSystem.server.lua index 439395e..4c4fdb0 100644 --- a/src/ServerScriptService/MainSystem.server.lua +++ b/src/ServerScriptService/MainSystem.server.lua @@ -15,7 +15,9 @@ end) -- Example #2 Printing the Roblox website's status every 5 minutes. -while true do +local RunService = game:GetService("RunService") + +while RunService.Heartbeat:Wait() do local siteStatus = DowntimeService.statusFromAlias("site"):lower() if siteStatus == "down" then warn("Roblox Website is Currently Down! Please be patient while Roblox works on a fix! :)") From a3c137213a1a8741be560d9883160aa444b68869 Mon Sep 17 00:00:00 2001 From: J-Man775 Date: Mon, 4 Jul 2022 19:16:36 +0200 Subject: [PATCH 5/6] Update MainSystem.server.lua --- src/ServerScriptService/MainSystem.server.lua | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/ServerScriptService/MainSystem.server.lua b/src/ServerScriptService/MainSystem.server.lua index 4c4fdb0..e61a87f 100644 --- a/src/ServerScriptService/MainSystem.server.lua +++ b/src/ServerScriptService/MainSystem.server.lua @@ -15,9 +15,14 @@ end) -- Example #2 Printing the Roblox website's status every 5 minutes. -local RunService = game:GetService("RunService") - -while RunService.Heartbeat:Wait() do +local debounce = false +game:GetService('RunService').Heartbeat:Connect(function() + if debounce then return end + coroutine.wrap(function() + debounce = true + task.wait(300) -- 300 seconds so 5 minutes. + debounce = false + end)() local siteStatus = DowntimeService.statusFromAlias("site"):lower() if siteStatus == "down" then warn("Roblox Website is Currently Down! Please be patient while Roblox works on a fix! :)") @@ -26,5 +31,4 @@ while RunService.Heartbeat:Wait() do elseif siteStatus == "up" then print("Roblox website is currently up!") end - wait(300) -end +end) From d41f1a4cc1fc1a20bfdc0413010e30813106b2c8 Mon Sep 17 00:00:00 2001 From: J-Man775 Date: Mon, 4 Jul 2022 19:18:34 +0200 Subject: [PATCH 6/6] Update MainSystem.server.lua --- src/ServerScriptService/MainSystem.server.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ServerScriptService/MainSystem.server.lua b/src/ServerScriptService/MainSystem.server.lua index e61a87f..577011b 100644 --- a/src/ServerScriptService/MainSystem.server.lua +++ b/src/ServerScriptService/MainSystem.server.lua @@ -8,7 +8,7 @@ local kickPlayers = true Players.PlayerAdded:Connect(function(player) if DowntimeService.statusFromAlias("datastore"):lower() == "down" then if kickPlayers then - player:Kick("Datastores are currently down. To prevent critical errors we have kicked you. If this issue persits please contact the game owner. =") + player:Kick("Datastores are currently down. To prevent critical errors we have kicked you. If this issue persits please contact the game owner. =)") end end end)