krakaen

Pastebin Program Fix - ComputerCraft

Mar 28th, 2017
25,070
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --*****************************************************
  2. --*   This is a copy of the pastebin program with a   *
  3. --*          a change in the http protocol            *
  4. --*****************************************************
  5.  
  6. local function printUsage()
  7.     print( "Usages:" )
  8.     print( "pastebin put <filename>" )
  9.     print( "pastebin get <code> <filename>" )
  10.     print( "pastebin run <code> <arguments>" )
  11. end
  12.  
  13. local tArgs = { ... }
  14. if #tArgs < 2 then
  15.     printUsage()
  16.     return
  17. end
  18.  
  19. if not http then
  20.     printError( "Pastebin requires http API" )
  21.     printError( "Set http_enable to true in ComputerCraft.cfg" )
  22.     return
  23. end
  24.  
  25. local function get(paste)
  26.     write( "Connecting to pastebin.com... " )
  27.     local response = http.get(
  28.         "https://pastebin.com/raw/"..textutils.urlEncode( paste )
  29.     )
  30.        
  31.     if response then
  32.         print( "Success." )
  33.        
  34.         local sResponse = response.readAll()
  35.         response.close()
  36.         return sResponse
  37.     else
  38.         printError( "Failed." )
  39.     end
  40. end
  41.  
  42. local sCommand = tArgs[1]
  43. if sCommand == "put" then
  44.     -- Upload a file to pastebin.com
  45.     -- Determine file to upload
  46.     local sFile = tArgs[2]
  47.     local sPath = shell.resolve( sFile )
  48.     if not fs.exists( sPath ) or fs.isDir( sPath ) then
  49.         print( "No such file" )
  50.         return
  51.     end
  52.    
  53.     -- Read in the file
  54.     local sName = fs.getName( sPath )
  55.     local file = fs.open( sPath, "r" )
  56.     local sText = file.readAll()
  57.     file.close()
  58.    
  59.     -- POST the contents to pastebin
  60.     write( "Connecting to pastebin.com... " )
  61.     local key = "0ec2eb25b6166c0c27a394ae118ad829"
  62.     local response = http.post(
  63.         "https://pastebin.com/api/api_post.php",
  64.         "api_option=paste&"..
  65.         "api_dev_key="..key.."&"..
  66.         "api_paste_format=lua&"..
  67.         "api_paste_name="..textutils.urlEncode(sName).."&"..
  68.         "api_paste_code="..textutils.urlEncode(sText)
  69.     )
  70.        
  71.     if response then
  72.         print( "Success." )
  73.        
  74.         local sResponse = response.readAll()
  75.         response.close()
  76.                
  77.         local sCode = string.match( sResponse, "[^/]+$" )
  78.         print( "Uploaded as "..sResponse )
  79.         print( "Run \"pastebin get "..sCode.."\" to download anywhere" )
  80.  
  81.     else
  82.         print( "Failed." )
  83.     end
  84.    
  85. elseif sCommand == "get" then
  86.     -- Download a file from pastebin.com
  87.     if #tArgs < 3 then
  88.         printUsage()
  89.         return
  90.     end
  91.  
  92.     -- Determine file to download
  93.     local sCode = tArgs[2]
  94.     local sFile = tArgs[3]
  95.     local sPath = shell.resolve( sFile )
  96.     if fs.exists( sPath ) then
  97.         print( "File already exists" )
  98.         return
  99.     end
  100.    
  101.     -- GET the contents from pastebin
  102.     local res = get(sCode)
  103.     if res then        
  104.         local file = fs.open( sPath, "w" )
  105.         file.write( res )
  106.         file.close()
  107.        
  108.         print( "Downloaded as "..sFile )
  109.     end
  110. elseif sCommand == "run" then
  111.     local sCode = tArgs[2]
  112.  
  113.     local res = get(sCode)
  114.     if res then
  115.         local func, err = load(res, sCode, "t", _ENV)
  116.         if not func then
  117.             printError( err )
  118.             return
  119.         end
  120.         local success, msg = pcall(func, table.unpack(tArgs, 3))
  121.         if not success then
  122.             printError( msg )
  123.         end
  124.     end
  125. else
  126.     printUsage()
  127.     return
  128. end
RAW Paste Data