api.h
Go to the documentation of this file.
1 #ifndef CPR_API_H
2 #define CPR_API_H
3 
4 #include <functional>
5 #include <future>
6 #include <string>
7 
8 #include "cpr/auth.h"
9 #include "cpr/cprtypes.h"
10 #include "cpr/defines.h"
11 #include "cpr/digest.h"
12 #include "cpr/multipart.h"
13 #include "cpr/payload.h"
14 #include "cpr/response.h"
15 #include "cpr/session.h"
16 
17 namespace cpr {
18 
19 using AsyncResponse = std::future<Response>;
20 
21 namespace priv {
22 
23 template <typename T>
24 void set_option(Session& session, T&& t) {
25  session.SetOption(CPR_FWD(t));
26 }
27 
28 template <typename T, typename... Ts>
29 void set_option(Session& session, T&& t, Ts&&... ts) {
30  set_option(session, CPR_FWD(t));
31  set_option(session, CPR_FWD(ts)...);
32 }
33 
34 } // namespace priv
35 
36 // Get methods
37 template <typename... Ts>
38 Response Get(Ts&&... ts) {
39  Session session;
40  priv::set_option(session, CPR_FWD(ts)...);
41  return session.Get();
42 }
43 
44 // Get async methods
45 template <typename... Ts>
47  return std::async(std::launch::async, [](Ts... ts) { return Get(std::move(ts)...); },
48  std::move(ts)...);
49 }
50 
51 // Get callback methods
52 template <typename Then, typename... Ts>
53 auto GetCallback(Then then, Ts... ts) -> std::future<decltype(then(Get(std::move(ts)...)))> {
54  return std::async(std::launch::async, [](Then then, Ts... ts) {
55  return then(Get(std::move(ts)...));
56  }, std::move(then), std::move(ts)...);
57 }
58 
59 // Post methods
60 template <typename... Ts>
61 Response Post(Ts&&... ts) {
62  Session session;
63  priv::set_option(session, CPR_FWD(ts)...);
64  return session.Post();
65 }
66 
67 // Post async methods
68 template <typename... Ts>
70  return std::async(std::launch::async, [](Ts... ts) { return Post(std::move(ts)...); },
71  std::move(ts)...);
72 }
73 
74 // Post callback methods
75 template <typename Then, typename... Ts>
76 auto PostCallback(Then then, Ts... ts) -> std::future<decltype(then(Post(std::move(ts)...)))> {
77  return std::async(std::launch::async, [](Then then, Ts... ts) {
78  return then(Post(std::move(ts)...));
79  }, std::move(then), std::move(ts)...);
80 }
81 
82 // Put methods
83 template <typename... Ts>
84 Response Put(Ts&&... ts) {
85  Session session;
86  priv::set_option(session, CPR_FWD(ts)...);
87  return session.Put();
88 }
89 
90 // Put async methods
91 template <typename... Ts>
93  return std::async(std::launch::async, [](Ts... ts) { return Put(std::move(ts)...); },
94  std::move(ts)...);
95 }
96 
97 // Put callback methods
98 template <typename Then, typename... Ts>
99 auto PutCallback(Then then, Ts... ts) -> std::future<decltype(then(Put(std::move(ts)...)))> {
100  return std::async(std::launch::async, [](Then then, Ts... ts) {
101  return then(Put(std::move(ts)...));
102  }, std::move(then), std::move(ts)...);
103 }
104 
105 // Head methods
106 template <typename... Ts>
107 Response Head(Ts&&... ts) {
108  Session session;
109  priv::set_option(session, CPR_FWD(ts)...);
110  return session.Head();
111 }
112 
113 // Head async methods
114 template <typename... Ts>
116  return std::async(std::launch::async, [](Ts... ts) { return Head(std::move(ts)...); },
117  std::move(ts)...);
118 }
119 
120 // Head callback methods
121 template <typename Then, typename... Ts>
122 auto HeadCallback(Then then, Ts... ts) -> std::future<decltype(then(Head(std::move(ts)...)))> {
123  return std::async(std::launch::async, [](Then then, Ts... ts) {
124  return then(Head(std::move(ts)...));
125  }, std::move(then), std::move(ts)...);
126 }
127 
128 // Delete methods
129 template <typename... Ts>
130 Response Delete(Ts&&... ts) {
131  Session session;
132  priv::set_option(session, CPR_FWD(ts)...);
133  return session.Delete();
134 }
135 
136 // Delete async methods
137 template <typename... Ts>
139  return std::async(std::launch::async, [](Ts... ts) { return Delete(std::move(ts)...); },
140  std::move(ts)...);
141 }
142 
143 // Delete callback methods
144 template <typename Then, typename... Ts>
145 auto DeleteCallback(Then then, Ts... ts) -> std::future<decltype(then(Delete(std::move(ts)...)))> {
146  return std::async(std::launch::async, [](Then then, Ts... ts) {
147  return then(Delete(std::move(ts)...));
148  }, std::move(then), std::move(ts)...);
149 }
150 
151 // Options methods
152 template <typename... Ts>
153 Response Options(Ts&&... ts) {
154  Session session;
155  priv::set_option(session, CPR_FWD(ts)...);
156  return session.Options();
157 }
158 
159 // Options async methods
160 template <typename... Ts>
162  return std::async(std::launch::async, [](Ts... ts) { return Options(std::move(ts)...); },
163  std::move(ts)...);
164 }
165 
166 // Options callback methods
167 template <typename Then, typename... Ts>
168 auto OptionsCallback(Then then, Ts... ts)
169  -> std::future<decltype(then(Options(std::move(ts)...)))> {
170  return std::async(std::launch::async, [](Then then, Ts... ts) {
171  return then(Options(std::move(ts)...));
172  }, std::move(then), std::move(ts)...);
173 }
174 
175 // Patch methods
176 template <typename... Ts>
177 Response Patch(Ts&&... ts) {
178  Session session;
179  priv::set_option(session, CPR_FWD(ts)...);
180  return session.Patch();
181 }
182 
183 // Patch async methods
184 template <typename... Ts>
186  return std::async(std::launch::async, [](Ts... ts) { return Patch(std::move(ts)...); },
187  std::move(ts)...);
188 }
189 
190 // Patch callback methods
191 template <typename Then, typename... Ts>
192 auto PatchCallback(Then then, Ts... ts) -> std::future<decltype(then(Patch(std::move(ts)...)))> {
193  return std::async(std::launch::async, [](Then then, Ts... ts) {
194  return then(Patch(std::move(ts)...));
195  }, std::move(then), std::move(ts)...);
196 }
197 
198 } // namespace cpr
199 
200 #endif
Response Post()
Definition: session.cpp:502
auto HeadCallback(Then then, Ts...ts) -> std::future< decltype(then(Head(std::move(ts)...)))>
Definition: api.h:122
Response Put(Ts &&...ts)
Definition: api.h:84
auto DeleteCallback(Then then, Ts...ts) -> std::future< decltype(then(Delete(std::move(ts)...)))>
Definition: api.h:145
Response Head()
Definition: session.cpp:499
AsyncResponse HeadAsync(Ts...ts)
Definition: api.h:115
geometry_msgs::TransformStamped t
Response Patch(Ts &&...ts)
Definition: api.h:177
auto PostCallback(Then then, Ts...ts) -> std::future< decltype(then(Post(std::move(ts)...)))>
Definition: api.h:76
auto OptionsCallback(Then then, Ts...ts) -> std::future< decltype(then(Options(std::move(ts)...)))>
Definition: api.h:168
AsyncResponse OptionsAsync(Ts...ts)
Definition: api.h:161
#define CPR_FWD(...)
Definition: defines.h:6
Response Get()
Definition: session.cpp:498
AsyncResponse GetAsync(Ts...ts)
Definition: api.h:46
Response Patch()
Definition: session.cpp:501
AsyncResponse DeleteAsync(Ts...ts)
Definition: api.h:138
Response Delete(Ts &&...ts)
Definition: api.h:130
AsyncResponse PostAsync(Ts...ts)
Definition: api.h:69
auto GetCallback(Then then, Ts...ts) -> std::future< decltype(then(Get(std::move(ts)...)))>
Definition: api.h:53
Response Options()
Definition: session.cpp:500
Response Put()
Definition: session.cpp:503
void set_option(Session &session, T &&t)
Definition: api.h:24
Response Get(Ts &&...ts)
Definition: api.h:38
Definition: auth.cpp:3
AsyncResponse PutAsync(Ts...ts)
Definition: api.h:92
Response Delete()
Definition: session.cpp:497
std::future< Response > AsyncResponse
Definition: api.h:19
void SetOption(const Url &url)
Definition: session.cpp:474
Response Head(Ts &&...ts)
Definition: api.h:107
auto PutCallback(Then then, Ts...ts) -> std::future< decltype(then(Put(std::move(ts)...)))>
Definition: api.h:99
const T & move(const T &t)
Definition: gtest-port.h:1343
Response Options(Ts &&...ts)
Definition: api.h:153
Response Post(Ts &&...ts)
Definition: api.h:61
AsyncResponse PatchAsync(Ts...ts)
Definition: api.h:185
auto PatchCallback(Then then, Ts...ts) -> std::future< decltype(then(Patch(std::move(ts)...)))>
Definition: api.h:192


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:08