230 lines
7.7 KiB
Plaintext
230 lines
7.7 KiB
Plaintext
IOPathConfig = autoImport("IOPathConfig")
|
|
|
|
BeautifulAreaPhotoNetIngManager = class("BeautifulAreaPhotoNetIngManager")
|
|
local ThumbnailTail = "!200"
|
|
local extension = "png"
|
|
|
|
function BeautifulAreaPhotoNetIngManager.Ins()
|
|
if BeautifulAreaPhotoNetIngManager.ins == null then
|
|
BeautifulAreaPhotoNetIngManager.ins = BeautifulAreaPhotoNetIngManager.new()
|
|
end
|
|
return BeautifulAreaPhotoNetIngManager.ins
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:Initialize()
|
|
self.downloadTasks = {}
|
|
self.uploadTasks = {}
|
|
self.waitingSignatureUpload = {}
|
|
self.waitingServerPathDownload = {}
|
|
-- EventManager.Me():AddEventListener(LoadSceneEvent.BeginLoadScene, self.OnSwitchOn, self)
|
|
-- EventManager.Me():AddEventListener(LoadSceneEvent.FinishLoadScene, self.OnSwitchOff, self)
|
|
self.m_switch = true
|
|
|
|
EventManager.Me():AddEventListener(ServiceEvent.NUserUploadSceneryPhotoUserCmd, self.OnRequestSignatureAndPolicyComp, self)
|
|
EventManager.Me():AddEventListener(ServiceEvent.NUserDownloadSceneryPhotoUserCmd, self.OnRequestServerPathComp, self)
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:NetIsValid(action)
|
|
InternetUtil.Ins:WIFIIsValid(action, 5)
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:OnSwitchOn()
|
|
self.m_switch = true
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:OnSwitchOff()
|
|
self.m_switch = true
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:Download(ba_id, is_origin, local_path, on_start, on_progress, on_complete, on_error)
|
|
if self.serverPath == nil then
|
|
if not self.isRequestingServerPath then
|
|
ServiceNUserProxy.Instance:CallDownloadSceneryPhotoUserCmd()
|
|
self.isRequestingServerPath = true
|
|
end
|
|
table.insert(self.waitingServerPathDownload, {baID = ba_id, isOrigin = is_origin, localPath = local_path, onStart = on_start, onProgress = on_progress, onComplete = on_complete, onError = on_error})
|
|
else
|
|
self:NetIsValid(function (x)
|
|
if x and self.m_switch then
|
|
local serverPath = self.serverPath .. ba_id .. '.' .. extension
|
|
if not is_origin then
|
|
serverPath = serverPath .. ThumbnailTail
|
|
end
|
|
local id = self:DoDownload(serverPath, local_path, on_start, on_progress, on_complete, on_error)
|
|
table.insert(self.downloadTasks, {id = id, localPath = local_path})
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:DoDownload(server_path, local_path, on_start, on_progress, on_complete, on_error)
|
|
local id = UpYunNetIngFileTaskManager.Ins:Download(server_path, local_path, function ()
|
|
if on_start ~= nil then
|
|
on_start()
|
|
end
|
|
end, function (progress)
|
|
if on_progress ~= nil then
|
|
on_progress(progress)
|
|
end
|
|
end, function ()
|
|
self:_RemoveDownloadTask(local_path)
|
|
|
|
if on_complete ~= nil then
|
|
on_complete()
|
|
end
|
|
end, function (error_type, error_code, error_message)
|
|
if on_error ~= nil then
|
|
on_error(error_type, error_code, error_message)
|
|
end
|
|
end)
|
|
return id
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:Upload(ba_id, local_path, on_start, on_progress, on_complete, on_error)
|
|
-- request signature and policy
|
|
local absolutePath = FileDirectoryHandler.GetAbsolutePath(local_path)
|
|
local fileMD5 = MyMD5.HashFile(absolutePath)
|
|
local myFile = MyFileFactory.Ins:GetMyFile(absolutePath)
|
|
local blockCount = myFile.BlockCount
|
|
local fileSize = myFile.Size
|
|
ServiceNUserProxy.Instance:CallUploadSceneryPhotoUserCmd(fileMD5, ba_id, nil, nil, blockCount, fileMD5, fileSize)
|
|
|
|
-- put into waiting signature collection
|
|
table.insert(self.waitingSignatureUpload, {baID = ba_id, localPath = local_path, onStart = on_start, onProgress = on_progress, onComplete = on_complete, onError = on_error})
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:DoUpload(local_path, signature, policy, on_start, on_progress, on_complete, on_error)
|
|
local id = UpYunNetIngFileTaskManager.Ins:Upload(local_path, signature, policy, function ()
|
|
if on_start ~= nil then
|
|
on_start()
|
|
end
|
|
end, function (progress)
|
|
if on_progress ~= nil then
|
|
on_progress(progress)
|
|
end
|
|
end, function ()
|
|
self:_RemoveUploadTask(local_path)
|
|
if on_complete ~= nil then
|
|
on_complete()
|
|
end
|
|
end, function (error_type, error_code, error_message)
|
|
if on_error ~= nil then
|
|
on_error(error_type, error_code, error_message)
|
|
end
|
|
end)
|
|
return id
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:OnRequestSignatureAndPolicyComp(data)
|
|
if data == nil then return end
|
|
local baID = data.sceneryid
|
|
local params = nil
|
|
for i = 1, #self.waitingSignatureUpload do
|
|
local item = self.waitingSignatureUpload[i]
|
|
if item.baID == baID then
|
|
params = item
|
|
table.remove(self.waitingSignatureUpload, i)
|
|
break
|
|
end
|
|
end
|
|
if params ~= nil then
|
|
--self:RemoveUploadTask(params.localPath)
|
|
self:NetIsValid(function (x)
|
|
if x and self.m_switch then
|
|
local id = self:DoUpload(params.localPath, data.signature, data.policy, params.onStart, params.onProgress, params.onComplete, params.onError)
|
|
table.insert(self.uploadTasks, {id = id, localPath = params.localPath})
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:OnRequestServerPathComp(data)
|
|
if data == nil then return end
|
|
self.serverPath = data.url
|
|
|
|
self:NetIsValid(function (x)
|
|
if x and self.m_switch then
|
|
for i = #self.waitingServerPathDownload, 1, -1 do
|
|
local item = self.waitingServerPathDownload[i]
|
|
local serverPath = self.serverPath .. item.baID .. '.' .. extension
|
|
if not item.isOrigin then
|
|
serverPath = serverPath .. ThumbnailTail
|
|
end
|
|
local id = self:DoDownload(serverPath, item.localPath, item.onStart, item.onProgress, item.onComplete, item.onError)
|
|
table.insert(self.downloadTasks, {id = id, localPath = item.localPath})
|
|
table.remove(self.waitingServerPathDownload, i)
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:_RemoveUploadTask(local_path)
|
|
for i = 1, #self.uploadTasks do
|
|
local uploadTask = self.uploadTasks[i]
|
|
if uploadTask.localPath == local_path then
|
|
table.remove(self.uploadTasks, i)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:_RemoveDownloadTask(local_path)
|
|
for i = 1, #self.downloadTasks do
|
|
local downloadTask = self.downloadTasks[i]
|
|
if downloadTask.localPath == local_path then
|
|
table.remove(self.downloadTasks, i)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:RemoveUploadTask(local_path)
|
|
for i = #self.uploadTasks, 1, -1 do
|
|
local uploadTask = self.uploadTasks[i]
|
|
if uploadTask.localPath == local_path then
|
|
UpYunNetIngFileTaskManager.Ins:RemoveBlocksUploadTaskFromID(uploadTask.id)
|
|
table.remove(self.uploadTasks, i)
|
|
end
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:RemoveWaitingUploadTask(local_path)
|
|
for i = #self.waitingSignatureUpload, 1, -1 do
|
|
local uploadTask = self.waitingSignatureUpload[i]
|
|
if uploadTask.localPath == local_path then
|
|
table.remove(self.waitingSignatureUpload, i)
|
|
end
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:RemoveDownloadTask(local_path)
|
|
for i = #self.downloadTasks, 1, -1 do
|
|
local downloadTask = self.downloadTasks[i]
|
|
if downloadTask.localPath == local_path then
|
|
UpYunNetIngFileTaskManager.Ins:RemoveDownloadTaskFromID(downloadTask.id)
|
|
table.remove(self.downloadTasks, i)
|
|
end
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:RemoveWaitingDownloadTask(local_path)
|
|
for i = #self.waitingServerPathDownload, 1, -1 do
|
|
local downloadTask = self.waitingServerPathDownload[i]
|
|
if downloadTask.localPath == local_path then
|
|
table.remove(self.waitingServerPathDownload, i)
|
|
end
|
|
end
|
|
end
|
|
|
|
function BeautifulAreaPhotoNetIngManager:IsDownloading(local_path)
|
|
for i = 1, #self.downloadTasks do
|
|
local downloadTask = self.downloadTasks[i]
|
|
if downloadTask.localPath == local_path then
|
|
local downloadTaskInfo = UpYunNetIngFileTaskManager.Ins:GetDownloadTaskInfoFromID(downloadTask.id)
|
|
if downloadTaskInfo and (downloadTaskInfo.state == 1 or downloadTaskInfo.state == 5) then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end |