10Duke Scale C++ Client
Loading...
Searching...
No Matches
BaseRequest.h
1#ifndef TENDUKE_SE_LICENSING_BASEREQUEST_H
2#define TENDUKE_SE_LICENSING_BASEREQUEST_H
3
4#include "../../../rest/StatefulAPIRequest.h"
5#include "../../api/MutableLeases.h"
6
7namespace tenduke { namespace se { namespace licensing {
8
22template<class R>
24{
25
26public:
34 const std::shared_ptr<::tenduke::se::APIRequest<R>> &request,
35 const std::shared_ptr<::tenduke::se::licensing::MutableLeases> &leases,
36 const std::shared_ptr<::tenduke::oidc::OIDCSession> &oidc = nullptr
37 ) : leases(leases)
38 , oidc(oidc)
39 , request(request)
40 {}
41
46 virtual R execute()
47 {
48 R response = executeRequest();
49 maintainLeases(response);
50 return response;
51 }
52
53protected:
58 virtual R executeRequest()
59 {
60 if (oidc == nullptr) {
61 return request->execute();
62 }
63 return ::tenduke::se::StatefulAPIRequest<R>(request, oidc).execute();
64 }
70 virtual void maintainLeases(const R &response)
71 {
72 }
73
74protected:
76 const std::shared_ptr<::tenduke::se::licensing::MutableLeases> leases;
77
78private:
79 const std::shared_ptr<::tenduke::oidc::OIDCSession> oidc;
80 const std::shared_ptr<::tenduke::se::APIRequest<R>> request;
81};
82
83}}}
84
85#endif //TENDUKE_SE_LICENSING_BASEREQUEST_H
Interface for 10Duke Scale API-requests.
Definition APIRequest.h:12
A tenduke::se::APIRequest, which uses tenduke::oidc::OIDCSession to maintain request authorization.
Definition StatefulAPIRequest.h:27
High-level licensing client request.
Definition BaseRequest.h:24
virtual R executeRequest()
Executes the request.
Definition BaseRequest.h:58
virtual R execute()
Executes the request.
Definition BaseRequest.h:46
const std::shared_ptr<::tenduke::se::licensing::MutableLeases > leases
The lease cache.
Definition BaseRequest.h:76
virtual void maintainLeases(const R &response)
Performs lease-cache maintenance.
Definition BaseRequest.h:70
BaseRequest(const std::shared_ptr<::tenduke::se::APIRequest< R > > &request, const std::shared_ptr<::tenduke::se::licensing::MutableLeases > &leases, const std::shared_ptr<::tenduke::oidc::OIDCSession > &oidc=nullptr)
Constructs new instance.
Definition BaseRequest.h:33
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7