mirror of
				https://github.com/Telecominfraproject/wlan-cloud-userportal.git
				synced 2025-10-31 18:48:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //
 | |
| // Created by stephane bourque on 2022-10-26.
 | |
| //
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "Poco/Net/WebSocket.h"
 | |
| #include "framework/RESTAPI_Handler.h"
 | |
| 
 | |
| #include "framework/MicroServiceFuncs.h"
 | |
| #include "framework/UI_WebSocketClientServer.h"
 | |
| 
 | |
| namespace OpenWifi {
 | |
| 	class RESTAPI_webSocketServer : public RESTAPIHandler {
 | |
| 	  public:
 | |
| 		inline RESTAPI_webSocketServer(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L,
 | |
| 									   RESTAPI_GenericServerAccounting &Server,
 | |
| 									   uint64_t TransactionId, bool Internal)
 | |
| 			: RESTAPIHandler(bindings, L,
 | |
| 							 std::vector<std::string>{Poco::Net::HTTPRequest::HTTP_GET,
 | |
| 													  Poco::Net::HTTPRequest::HTTP_OPTIONS},
 | |
| 							 Server, TransactionId, Internal, false) {}
 | |
| 		static auto PathName() { return std::list<std::string>{"/api/v1/ws"}; }
 | |
| 		void DoGet() final {
 | |
| 			try {
 | |
| 				if (Request->find("Upgrade") != Request->end() &&
 | |
| 					Poco::icompare((*Request)["Upgrade"], "websocket") == 0) {
 | |
| 					try {
 | |
| 						Poco::Net::WebSocket WS(*Request, *Response);
 | |
| 						auto Id = MicroServiceCreateUUID();
 | |
| 						UI_WebSocketClientServer()->NewClient(WS, Id, UserInfo_.userinfo.email,
 | |
| 															  TransactionId_);
 | |
| 					} catch (...) {
 | |
| 						std::cout << "Cannot create websocket client..." << std::endl;
 | |
| 					}
 | |
| 				}
 | |
| 			} catch (...) {
 | |
| 				std::cout << "Cannot upgrade connection..." << std::endl;
 | |
| 			}
 | |
| 		};
 | |
| 		void DoDelete() final{};
 | |
| 		void DoPost() final{};
 | |
| 		void DoPut() final{};
 | |
| 
 | |
| 	  private:
 | |
| 	};
 | |
| } // namespace OpenWifi
 | 
