42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include <pd/external/json.hpp>
 | 
						|
#include <string>
 | 
						|
 | 
						|
namespace Palladium {
 | 
						|
namespace Net {
 | 
						|
// Define List of Errors
 | 
						|
enum Error_ {
 | 
						|
  Error_None,        // Function Executed Successfully
 | 
						|
  Error_Memory,      // Memory  Allocation Error
 | 
						|
  Error_Write,       // Unable to Write File
 | 
						|
  Error_StatusCode,  // Error with Status Code
 | 
						|
  Error_Git,         // Git Error
 | 
						|
  Error_CtrStatus,   // 3ds Result Code
 | 
						|
  Error_Curl,        // Curl Error
 | 
						|
  Error_Busy,        // Another Download Taskl is already running
 | 
						|
  Error_Invalid,     // Invalid Json struct
 | 
						|
  Error_NoWifi,      // Console not connected to wifi
 | 
						|
};
 | 
						|
// Set an typedefine for Error code
 | 
						|
using Error = unsigned long long;
 | 
						|
// Extract Error_ from Error code
 | 
						|
inline Error_ ErrorCode(Error err) {
 | 
						|
  return static_cast<Error_>(static_cast<unsigned int>(err & 0xffffffff));
 | 
						|
}
 | 
						|
// Extract Http Status code, Curl Error Code or Ctr Result Code
 | 
						|
inline int StatusCode(Error err) {
 | 
						|
  Error_ c = ErrorCode(err);
 | 
						|
  if (c != Error_StatusCode && c != Error_CtrStatus && c != Error_Curl)
 | 
						|
    return 0;
 | 
						|
  return static_cast<unsigned int>(err >> 32);
 | 
						|
}
 | 
						|
Error Download(const std::string& url, std::string& data);
 | 
						|
Error Download2File(const std::string& url, const std::string& path);
 | 
						|
Error GitDownloadRelease(const std::string& url, const std::string& asset_name,
 | 
						|
                         const std::string& path, bool prerelease = false);
 | 
						|
Error JsonApiRequest(const std::string& api_url, nlohmann::json& res);
 | 
						|
unsigned long long GetProgressCurrent();
 | 
						|
unsigned long long GetProgressTotal();
 | 
						|
}  // namespace Net
 | 
						|
}  // namespace Palladium
 |