mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	web_backend: User config for username and token, support anonymous post.
This commit is contained in:
		
							parent
							
								
									40f417125b
								
							
						
					
					
						commit
						41328afb58
					
				
					 2 changed files with 18 additions and 41 deletions
				
			
		|  | @ -5,48 +5,37 @@ | ||||||
| #include <cpr/cpr.h> | #include <cpr/cpr.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include "common/logging/log.h" | #include "common/logging/log.h" | ||||||
|  | #include "core/settings.h" | ||||||
| #include "web_service/web_backend.h" | #include "web_service/web_backend.h" | ||||||
| 
 | 
 | ||||||
| namespace WebService { | namespace WebService { | ||||||
| 
 | 
 | ||||||
| static constexpr char API_VERSION[]{"1"}; | static constexpr char API_VERSION[]{"1"}; | ||||||
| static constexpr char ENV_VAR_USERNAME[]{"CITRA_WEB_SERVICES_USERNAME"}; |  | ||||||
| static constexpr char ENV_VAR_TOKEN[]{"CITRA_WEB_SERVICES_TOKEN"}; |  | ||||||
| 
 |  | ||||||
| static std::string GetEnvironmentVariable(const char* name) { |  | ||||||
|     const char* value{getenv(name)}; |  | ||||||
|     if (value) { |  | ||||||
|         return value; |  | ||||||
|     } |  | ||||||
|     return {}; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| const std::string& GetUsername() { |  | ||||||
|     static const std::string username{GetEnvironmentVariable(ENV_VAR_USERNAME)}; |  | ||||||
|     return username; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| const std::string& GetToken() { |  | ||||||
|     static const std::string token{GetEnvironmentVariable(ENV_VAR_TOKEN)}; |  | ||||||
|     return token; |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| void PostJson(const std::string& url, const std::string& data) { | void PostJson(const std::string& url, const std::string& data) { | ||||||
|  |     if (!Settings::values.enable_telemetry) { | ||||||
|  |         // Telemetry disabled by user configuration
 | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     if (url.empty()) { |     if (url.empty()) { | ||||||
|         LOG_ERROR(WebService, "URL is invalid"); |         LOG_ERROR(WebService, "URL is invalid"); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (GetUsername().empty() || GetToken().empty()) { |     if (Settings::values.citra_token.empty() || Settings::values.citra_username.empty()) { | ||||||
|         LOG_ERROR(WebService, "Environment variables %s and %s must be set to POST JSON", |         // Anonymous request if citra token or username are empty
 | ||||||
|                   ENV_VAR_USERNAME, ENV_VAR_TOKEN); |         cpr::PostAsync( | ||||||
|         return; |             cpr::Url{url}, cpr::Body{data}, | ||||||
|  |             cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); | ||||||
|  |     } else { | ||||||
|  |         // We have both, do an authenticated request
 | ||||||
|  |         cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, | ||||||
|  |                        cpr::Header{{"Content-Type", "application/json"}, | ||||||
|  |                                    {"x-username", Settings::values.citra_username}, | ||||||
|  |                                    {"x-token", Settings::values.citra_token}, | ||||||
|  |                                    {"api-version", API_VERSION}}); | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, cpr::Header{{"Content-Type", "application/json"}, |  | ||||||
|                                                                {"x-username", GetUsername()}, |  | ||||||
|                                                                {"x-token", GetToken()}, |  | ||||||
|                                                                {"api-version", API_VERSION}}); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| } // namespace WebService
 | } // namespace WebService
 | ||||||
|  |  | ||||||
|  | @ -9,18 +9,6 @@ | ||||||
| 
 | 
 | ||||||
| namespace WebService { | namespace WebService { | ||||||
| 
 | 
 | ||||||
| /**
 |  | ||||||
|  * Gets the current username for accessing services.citra-emu.org. |  | ||||||
|  * @returns Username as a string, empty if not set. |  | ||||||
|  */ |  | ||||||
| const std::string& GetUsername(); |  | ||||||
| 
 |  | ||||||
| /**
 |  | ||||||
|  * Gets the current token for accessing services.citra-emu.org. |  | ||||||
|  * @returns Token as a string, empty if not set. |  | ||||||
|  */ |  | ||||||
| const std::string& GetToken(); |  | ||||||
| 
 |  | ||||||
| /**
 | /**
 | ||||||
|  * Posts JSON to services.citra-emu.org. |  * Posts JSON to services.citra-emu.org. | ||||||
|  * @param url URL of the services.citra-emu.org endpoint to post data to. |  * @param url URL of the services.citra-emu.org endpoint to post data to. | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue