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:
27 virtual ~BaseRequest() = default;
28
36 const std::shared_ptr<::tenduke::se::APIRequest<R>> &request,
37 const std::shared_ptr<::tenduke::se::licensing::MutableLeases> &leases,
38 const std::shared_ptr<::tenduke::oidc::OIDCSession> &oidc = nullptr
39 ) : leases(leases)
40 , oidc(oidc)
41 , request(request)
42 {}
43
48 virtual R execute()
49 {
50 R response = executeRequest();
51 maintainLeases(response);
52 return response;
53 }
54
55protected:
60 virtual R executeRequest()
61 {
62 if (oidc == nullptr) {
63 return request->execute();
64 }
65 return ::tenduke::se::StatefulAPIRequest<R>(request, oidc).execute();
66 }
67
72 virtual void maintainLeases(const R &response)
73 {
74 }
75
76protected:
78 const std::shared_ptr<::tenduke::se::licensing::MutableLeases> leases;
79
80private:
81 const std::shared_ptr<::tenduke::oidc::OIDCSession> oidc;
82 const std::shared_ptr<::tenduke::se::APIRequest<R>> request;
83};
84
85}}}
86
87#endif //TENDUKE_SE_LICENSING_BASEREQUEST_H
Interface for 10Duke Scale API-requests.
Definition APIRequest.h:12
virtual R executeRequest()
Executes the request.
Definition BaseRequest.h:60
virtual R execute()
Executes the request.
Definition BaseRequest.h:48
const std::shared_ptr<::tenduke::se::licensing::MutableLeases > leases
The lease cache.
Definition BaseRequest.h:78
virtual void maintainLeases(const R &response)
Performs lease-cache maintenance.
Definition BaseRequest.h:72
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:35
Licensing operations for 10Duke Scale.
Definition LicenseConsumerClientBindingStatus.h:8
Classes, functions and globals of 10Duke Scale C++ Client.
Definition AbstractClientFactory.h:16
Root for classes, functions and globals of 10Duke C++ Client.
Definition AbstractClientFactory.h:16