00001 #ifndef CPR_SESSION_H 00002 #define CPR_SESSION_H 00003 00004 #include <cstdint> 00005 #include <memory> 00006 00007 #include "auth.h" 00008 #include "body.h" 00009 #include "cookies.h" 00010 #include "cprtypes.h" 00011 #include "digest.h" 00012 #include "max_redirects.h" 00013 #include "multipart.h" 00014 #include "parameters.h" 00015 #include "payload.h" 00016 #include "proxies.h" 00017 #include "response.h" 00018 #include "timeout.h" 00019 #include "low_speed.h" 00020 #include "ssl_options.h" 00021 00022 namespace cpr { 00023 00024 class Session { 00025 public: 00026 Session(); 00027 ~Session(); 00028 00029 void SetUrl(const Url& url); 00030 void SetParameters(const Parameters& parameters); 00031 void SetParameters(Parameters&& parameters); 00032 void SetHeader(const Header& header); 00033 void SetTimeout(const Timeout& timeout); 00034 void SetAuth(const Authentication& auth); 00035 void SetDigest(const Digest& auth); 00036 void SetPayload(Payload&& payload); 00037 void SetPayload(const Payload& payload); 00038 void SetProxies(Proxies&& proxies); 00039 void SetProxies(const Proxies& proxies); 00040 void SetMultipart(Multipart&& multipart); 00041 void SetMultipart(const Multipart& multipart); 00042 void SetRedirect(const bool& redirect); 00043 void SetMaxRedirects(const MaxRedirects& max_redirects); 00044 void SetCookies(const Cookies& cookies); 00045 void SetBody(Body&& body); 00046 void SetBody(const Body& body); 00047 void SetLowSpeed(const LowSpeed& low_speed); 00048 void SetVerifySsl(const VerifySsl& verify); 00049 00050 // Used in templated functions 00051 void SetOption(const Url& url); 00052 void SetOption(const Parameters& parameters); 00053 void SetOption(Parameters&& parameters); 00054 void SetOption(const Header& header); 00055 void SetOption(const Timeout& timeout); 00056 void SetOption(const Authentication& auth); 00057 void SetOption(const Digest& auth); 00058 void SetOption(Payload&& payload); 00059 void SetOption(const Payload& payload); 00060 void SetOption(Proxies&& proxies); 00061 void SetOption(const Proxies& proxies); 00062 void SetOption(Multipart&& multipart); 00063 void SetOption(const Multipart& multipart); 00064 void SetOption(const bool& redirect); 00065 void SetOption(const MaxRedirects& max_redirects); 00066 void SetOption(const Cookies& cookies); 00067 void SetOption(Body&& body); 00068 void SetOption(const Body& body); 00069 void SetOption(const LowSpeed& low_speed); 00070 void SetOption(const VerifySsl& verify); 00071 00072 Response Delete(); 00073 Response Get(); 00074 Response Head(); 00075 Response Options(); 00076 Response Patch(); 00077 Response Post(); 00078 Response Put(); 00079 00080 private: 00081 class Impl; 00082 std::unique_ptr<Impl> pimpl_; 00083 }; 00084 00085 } // namespace cpr 00086 00087 #endif