#pragma once #include #include #include #include #include #include namespace rublon { class Finish : public AuthenticationStep { const char * apiPath = "/api/transaction/credentials"; const std::string_view _accessToken; // void addAccessToken(Document & coreRequest) const { auto & alloc = coreRequest.GetAllocator(); coreRequest.AddMember("accessToken", Value{_accessToken.data(), alloc}, alloc); } tl::expected< bool, Error > returnOk(const Document & /*coreResponse*/) const { return true; } public: const char * name = "Finalization"; Finish(Session & session, std::string_view accessToken) : AuthenticationStep(session), _accessToken{accessToken} {} template < typename Hander_t > tl::expected< bool, Error > handle(const CoreHandlerInterface< Hander_t > & coreHandler) const { const auto returnOk = [&](const auto & coreResponse) { return this->returnOk(coreResponse); }; RapidJSONPMRStackAlloc< 2048 > alloc{}; Document body{rapidjson::kObjectType, &alloc}; this->addSystemToken(body); this->addAccessToken(body); return coreHandler .request(alloc, apiPath, body) // .and_then(returnOk); } }; } // namespace rublon