76 lines
1.9 KiB
Lua
76 lines
1.9 KiB
Lua
local HttpRbxApiService = game:GetService("HttpRbxApiService")
|
|
local HttpService = game:GetService("HttpService")
|
|
|
|
local MarketplaceService = game:GetService("MarketplaceService")
|
|
local InsertService = game:GetService("InsertService")
|
|
|
|
local Promise = require(script.Parent.Parent.Promise)
|
|
|
|
local function getProductInfo(id, infoType)
|
|
return MarketplaceService:GetProductInfo(id, infoType)
|
|
end
|
|
|
|
local function getPlayerOwns(player, id, infoType)
|
|
if infoType == Enum.InfoType.Asset then
|
|
return MarketplaceService:PlayerOwnsAsset(player, id)
|
|
elseif infoType == Enum.InfoType.GamePass then
|
|
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, id)
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
local function performPurchase(infoType, productId, expectedPrice, requestId)
|
|
local success, result = pcall(function()
|
|
return MarketplaceService:PerformPurchase(infoType, productId, expectedPrice, requestId)
|
|
end)
|
|
|
|
if success then
|
|
return result
|
|
end
|
|
|
|
error(tostring(result))
|
|
end
|
|
|
|
local function loadAssetForEquip(assetId)
|
|
return InsertService:LoadAsset(assetId)
|
|
end
|
|
|
|
local function getAccountInfo()
|
|
local success, result = pcall(function()
|
|
return HttpRbxApiService:GetAsync("users/account-info")
|
|
end)
|
|
|
|
if success and type(result) == "string" then
|
|
local decodeSuccess, decodeResult = pcall(function()
|
|
return HttpService:JSONDecode(result)
|
|
end)
|
|
if decodeSuccess then
|
|
return decodeResult
|
|
end
|
|
end
|
|
|
|
error(tostring(result))
|
|
end
|
|
|
|
local Network = {}
|
|
|
|
function Network.new()
|
|
local networkService = {
|
|
getProductInfo = Promise.promisify(getProductInfo),
|
|
getPlayerOwns = Promise.promisify(getPlayerOwns),
|
|
performPurchase = Promise.promisify(performPurchase),
|
|
loadAssetForEquip = Promise.promisify(loadAssetForEquip),
|
|
getAccountInfo = Promise.promisify(getAccountInfo),
|
|
}
|
|
|
|
setmetatable(networkService, {
|
|
__tostring = function()
|
|
return "Service(Network)"
|
|
end
|
|
})
|
|
|
|
return networkService
|
|
end
|
|
|
|
return Network |