From 2f28b9bee4da0ddebe0f6de9419e3b3f80ca0911 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Wed, 15 Sep 2021 21:39:53 +0200 Subject: Added session id generation and code to include it in HttpClient HTTP requests --- zencore/include/zencore/session.h | 11 +++++++++++ zencore/session.cpp | 21 +++++++++++++++++++++ zencore/zencore.vcxproj | 5 +++++ zencore/zencore.vcxproj.filters | 5 +++++ zenhttp/httpclient.cpp | 10 ++++++---- zenhttp/include/zenhttp/httpclient.h | 2 ++ 6 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 zencore/include/zencore/session.h create mode 100644 zencore/session.cpp diff --git a/zencore/include/zencore/session.h b/zencore/include/zencore/session.h new file mode 100644 index 000000000..e66794704 --- /dev/null +++ b/zencore/include/zencore/session.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace zen { + +struct Oid; + +ZENCORE_API Oid GetSessionId(); + +} diff --git a/zencore/session.cpp b/zencore/session.cpp new file mode 100644 index 000000000..195a9d97c --- /dev/null +++ b/zencore/session.cpp @@ -0,0 +1,21 @@ +#include "zencore/session.h" + +#include + +#include + +namespace zen { + +static Oid GlobalSessionId; +static std::once_flag SessionInitFlag; + +Oid GetSessionId() +{ + std::call_once(SessionInitFlag, [&] { + GlobalSessionId.Generate(); + }); + + return GlobalSessionId; +} + +} \ No newline at end of file diff --git a/zencore/zencore.vcxproj b/zencore/zencore.vcxproj index 4f1e63670..150c42cd6 100644 --- a/zencore/zencore.vcxproj +++ b/zencore/zencore.vcxproj @@ -132,6 +132,7 @@ + @@ -166,6 +167,7 @@ + MaxSpeed AnySuitable @@ -189,6 +191,9 @@ + + + diff --git a/zencore/zencore.vcxproj.filters b/zencore/zencore.vcxproj.filters index de3d915b8..ea0f8a912 100644 --- a/zencore/zencore.vcxproj.filters +++ b/zencore/zencore.vcxproj.filters @@ -41,6 +41,7 @@ + @@ -72,10 +73,14 @@ + {af5266fa-37a5-494c-9116-b15a3e6edd29} + + + \ No newline at end of file diff --git a/zenhttp/httpclient.cpp b/zenhttp/httpclient.cpp index b7df12026..78ecef2c0 100644 --- a/zenhttp/httpclient.cpp +++ b/zenhttp/httpclient.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -30,6 +31,9 @@ FromCprResponse(cpr::Response& InResponse) HttpClient::HttpClient(std::string_view BaseUri) : m_BaseUri(BaseUri) { + StringBuilder<32> SessionId; + GetSessionId().ToString(SessionId); + m_SessionId = SessionId; } HttpClient::~HttpClient() @@ -68,8 +72,7 @@ HttpClient::TransactPackage(std::string_view Url, CbPackage Package) BinaryWriter MemWriter(MemOut); Writer.Save(MemWriter); - Sess.SetHeader( - {{"Content-Type", "application/x-ue-offer"}, {"UE-Session", "123456789012345678901234"}, {"UE-Request", RequestIdString}}); + Sess.SetHeader({{"Content-Type", "application/x-ue-offer"}, {"UE-Session", m_SessionId}, {"UE-Request", RequestIdString}}); Sess.SetBody(cpr::Body{(const char*)MemOut.Data(), MemOut.Size()}); cpr::Response FilterResponse = Sess.Post(); @@ -111,8 +114,7 @@ HttpClient::TransactPackage(std::string_view Url, CbPackage Package) CompositeBuffer Message = FormatPackageMessageBuffer(SendPackage); SharedBuffer FlatMessage = Message.Flatten(); - Sess.SetHeader( - {{"Content-Type", "application/x-ue-cbpkg"}, {"UE-Session", "123456789012345678901234"}, {"UE-Request", RequestIdString}}); + Sess.SetHeader({{"Content-Type", "application/x-ue-cbpkg"}, {"UE-Session", m_SessionId}, {"UE-Request", RequestIdString}}); Sess.SetBody(cpr::Body{(const char*)FlatMessage.GetData(), FlatMessage.GetSize()}); cpr::Response FilterResponse = Sess.Post(); diff --git a/zenhttp/include/zenhttp/httpclient.h b/zenhttp/include/zenhttp/httpclient.h index 8975f6fe1..c3bdf0506 100644 --- a/zenhttp/include/zenhttp/httpclient.h +++ b/zenhttp/include/zenhttp/httpclient.h @@ -5,6 +5,7 @@ #include "zenhttp.h" #include +#include #include #include @@ -41,6 +42,7 @@ public: private: std::string m_BaseUri; + std::string m_SessionId; }; } // namespace zen -- cgit v1.2.3