cpp Rest API master
C++ library for REST API access with Qt, Curl and cpp-httplib backends
 
Loading...
Searching...
No Matches
connection_builder.hpp
Go to the documentation of this file.
1
2#ifndef CONNECTION_BUILDER_HPP_INCLUDED
3#define CONNECTION_BUILDER_HPP_INCLUDED
4
5#include <functional>
6#include <map>
7#include <memory>
8
10
11
13{
19 {
20 public:
22 : m_address("https://api.github.com")
23 {
24 }
25
27
35 ConnectionBuilder& setAddress(const std::string& address)
36 {
37 m_address = address;
38
39 return *this;
40 }
41
46 ConnectionBuilder& setToken(const std::string& token)
47 {
48 m_headerEntries.emplace("Authorization", "token " + token);
49
50 return *this;
51 }
52
64 template<typename Factory, typename... Args>
65 std::unique_ptr<IConnection> build(Factory&& factory, Args&&... args)
66 {
67 return std::invoke(std::forward<Factory>(factory),
68 std::forward<Args>(args)..., m_address, m_headerEntries);
69 }
70
77 template<typename CT, typename... Args>
78 [[deprecated("Use build(factory, args...) with a factory function instead")]]
79 std::shared_ptr<IConnection> build(Args&&... args)
80 {
81 return std::make_shared<CT>(std::forward<Args>(args)..., m_address, m_headerEntries);
82 }
83
84 private:
85 std::map<std::string, std::string> m_headerEntries;
86 std::string m_address;
87 };
88}
89
90#endif
Connection build for GitHub api.
Definition connection_builder.hpp:19
ConnectionBuilder(const ConnectionBuilder &)=delete
ConnectionBuilder & setToken(const std::string &token)
set token used for authorization
Definition connection_builder.hpp:46
std::unique_ptr< IConnection > build(Factory &&factory, Args &&... args)
build cpp_restapi::IConnection object using a factory function
Definition connection_builder.hpp:65
ConnectionBuilder & setAddress(const std::string &address)
change github api address.
Definition connection_builder.hpp:35
ConnectionBuilder()
Definition connection_builder.hpp:21
std::shared_ptr< IConnection > build(Args &&... args)
build cpp_restapi::IConnection object
Definition connection_builder.hpp:79
Definition connection_builder.hpp:13