Cryptolens Client API for C++
RequestHandler_v20190401_to_v20180502.hpp
1 #pragma once
2 
3 #include "api.hpp"
4 #include "basic_Error.hpp"
5 #include "Error.hpp"
6 
7 namespace cryptolens_io {
8 
9 namespace internal {
10 
11 template<typename RequestHandler>
13 {
14 public:
15 #ifndef CRYPTOLENS_20190701_ALLOW_IMPLICIT_CONSTRUCTORS
16  explicit
17 #endif
19 
20  template<typename Map>
21  std::string
22  make_request(::cryptolens_io::v20180502::basic_Error & e, char const* method, Map const& map);
23 
24 private:
26  RequestHandler inner_;
27 };
28 
29 template<typename RequestHandler>
31 : e_(), inner_(e_)
32 {}
33 
34 template<typename RequestHandler>
35 template<typename Map>
36 std::string
38 {
39  namespace api = ::cryptolens_io::v20180502::api;
40  namespace errors = ::cryptolens_io::v20180502::errors;
41 
42  if (e) { return ""; }
43  if (e_) {
44  e.set(api::main(), errors::Subsystem::RequestHandler); // TODO: Add more detailed error code
45  return "";
46  }
47 
48  std::string endpoint("/api/key/");
49  endpoint += method;
50 
51  auto request = inner_.post_request(e, "app.cryptolens.io", endpoint.c_str());
52 
53  for (auto x : map) { request.add_argument(e, x.first.c_str(), x.second.c_str()); }
54 
55  return request.make(e);
56 }
57 
58 } // namespace internal
59 
60 } // namespace cryptolens_io
Definition: ActivateError.hpp:5
Definition: basic_Error.hpp:90
Definition: RequestHandler_v20190401_to_v20180502.hpp:12
Definition: Error.hpp:9