Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. function OspFileQueue:download(get, post, req, resp)
  2. local sessionTicket = req.headers:fieldByName("SessionTicket")
  3. local sessionEmail = req.headers:fieldByName("SessionEmail")
  4.  
  5. local session = false
  6. if (sessionTicket ~= nil) and (sessionEmail ~= nil) then
  7. session = CurrentSession.openSession(sessionEmail,sessionTicket)
  8. end
  9.  
  10. if(session == false or CurrentSession.status ~= SessionStatusEnum.LOGGEDIN) then
  11. local response = { error = "user not logged in" }
  12. resp.headers:setHeader("Content-Type", "application/json; charset=UTF-8")
  13. resp:writeToBody(JSON4Lua.encode(response))
  14. return
  15. end
  16.  
  17. CurrentSession.enterSudo()
  18. local fileDS = DataSync:new(File)
  19. local file = fileDS:get(get.id)
  20. CurrentSession.exitSudo()
  21.  
  22. if(file == nil) then
  23. resp.headers:setHeader("Content-Type", "application/json; charset=UTF-8")
  24. resp:writeToBody(JSON4Lua.encode({error = "file not found", ok = false}))
  25. return
  26. end
  27.  
  28. local fileExt = string.match(file:getName(),"^.+(%..+)$") or ""
  29.  
  30. local path = C.baseDir .. "/drive/" .. file:getOrganization() .. "/" .. file:getOwner() .. "/" .. file:getFileId() .. "/" .. get.id .. fileExt
  31. local lnx = Linux.DLinux()
  32.  
  33. local fileHandle = io.open(path,"r")
  34. if(fileHandle == nil) then
  35. local response = { error = "couldn't find file or directory" }
  36. resp.headers:setHeader("Content-Type", "application/json; charset=UTF-8")
  37. resp:writeToBody(JSON4Lua.encode(response))
  38. return
  39. end
  40.  
  41. local fbody = fileHandle:read("*all")
  42. fileHandle:close()
  43.  
  44. resp.headers:setHeader("Content-Disposition", "attachment; filename=\""..file:getName().."\"")
  45.  
  46. local contentTypeToken = DMIMESquareHeaderItem()
  47. contentTypeToken:setToken(file:getMimeString())
  48. contentTypeToken:setParam("name", file:getName())
  49. resp.headers.contentType:append(contentTypeToken)
  50.  
  51. resp:writeToBody(fbody)
  52. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement