mirror of
				https://github.com/kepler155c/opus
				synced 2025-10-30 23:23:03 +00:00 
			
		
		
		
	Added devbin.lua
I added devbin to be able to easily download stuff from devbin.
This commit is contained in:
		
							
								
								
									
										109
									
								
								sys/apps/devbin.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								sys/apps/devbin.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| local function printUsage() | ||||
|     print("Usages:") | ||||
|     print("devbin get <code> <filename>") | ||||
|     print("devbin run <code> <arguments>") | ||||
| end | ||||
|  | ||||
| local tArgs = { ... } | ||||
| if #tArgs < 2 then | ||||
|     printUsage() | ||||
|     return | ||||
| end | ||||
|  | ||||
| if not http then | ||||
|     printError("Devbin requires the http API") | ||||
|     printError("Set http.enabled to true in CC: Tweaked's config") | ||||
|     return | ||||
| end | ||||
|  | ||||
| --- Attempts to guess the pastebin ID from the given code or URL | ||||
| local function extractId(paste) | ||||
|     local patterns = { | ||||
|         "^([%a%d]+)$", | ||||
|         "^https?://devbin.dev/([%a%d]+)$", | ||||
|         "^devbin.dev/([%a%d]+)$", | ||||
|         "^https?://devbin.dev/raw/([%a%d]+)$", | ||||
|         "^devbin.dev/raw/([%a%d]+)$", | ||||
|     } | ||||
|  | ||||
|     for i = 1, #patterns do | ||||
|         local code = paste:match(patterns[i]) | ||||
|         if code then return code end | ||||
|     end | ||||
|  | ||||
|     return nil | ||||
| end | ||||
|  | ||||
| local function get(url) | ||||
|     local paste = extractId(url) | ||||
|     if not paste then | ||||
|         io.stderr:write("Invalid devbin code.\n") | ||||
|         io.write("The code is the ID at the end of the pastebin.com URL.\n") | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     write("Connecting to devbin.dev... ") | ||||
|     -- Add a cache buster so that spam protection is re-checked | ||||
|     local cacheBuster = ("%x"):format(math.random(0, 2 ^ 30)) | ||||
|     local response, err = http.get( | ||||
|         "https://devbin.dev/raw/" .. textutils.urlEncode(paste) .. "?cb=" .. cacheBuster | ||||
|     ) | ||||
|  | ||||
|     if response then | ||||
|         local headers = response.getResponseHeaders() | ||||
|         print("Success.") | ||||
|  | ||||
|         local sResponse = response.readAll() | ||||
|         response.close() | ||||
|         return sResponse | ||||
|     else | ||||
|         io.stderr:write("Failed.\n") | ||||
|         print(err) | ||||
|     end | ||||
| end | ||||
|  | ||||
| local sCommand = tArgs[1] | ||||
| if sCommand == "get" then | ||||
|     -- Download a file from pastebin.com | ||||
|     if #tArgs < 3 then | ||||
|         printUsage() | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     -- Determine file to download | ||||
|     local sCode = tArgs[2] | ||||
|     local sFile = tArgs[3] | ||||
|     local sPath = shell.resolve(sFile) | ||||
|     if fs.exists(sPath) then | ||||
|         print("File already exists") | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     -- GET the contents from pastebin | ||||
|     local res = get(sCode) | ||||
|     if res then | ||||
|         local file = fs.open(sPath, "w") | ||||
|         file.write(res) | ||||
|         file.close() | ||||
|  | ||||
|         print("Downloaded as " .. sFile) | ||||
|     end | ||||
| elseif sCommand == "run" then | ||||
|     local sCode = tArgs[2] | ||||
|  | ||||
|     local res = get(sCode) | ||||
|     if res then | ||||
|         local func, err = load(res, sCode, "t", _ENV) | ||||
|         if not func then | ||||
|             printError(err) | ||||
|             return | ||||
|         end | ||||
|         local success, msg = pcall(func, select(3, ...)) | ||||
|         if not success then | ||||
|             printError(msg) | ||||
|         end | ||||
|     end | ||||
| else | ||||
|     printUsage() | ||||
|     return | ||||
| end | ||||
		Reference in New Issue
	
	Block a user
	 BlackDragon-B
					BlackDragon-B