2 * Samsung Ukraine R&D Center (SRK under a contract between)
3 * LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
4 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License
19 * @file securityoptions.h
20 * @brief Container for the CURL options.
21 * @date Created May 10, 2017
22 * @author Mail to: <A HREF="mailto:d.lomtev@samsung.com">Dmytro Lomtev, d.lomtev@samsung.com</A>
24 #ifndef SECURITYOPTIONS_H
25 #define SECURITYOPTIONS_H
27 #include <curl/curl.h>
31 namespace communication
35 * @brief The SecurityOptions class container for CURL options
37 class SecurityOptions final : public std::list<std::function<void(CURL*)>>
42 * @param opt curl option
43 * @param val option value
46 void add(CURLoption opt, T val)
48 auto wrap = [opt, val](CURL* handle) {
49 curl_easy_setopt(handle, opt, val);
56 * @brief Applies options for supplied CURL handle.
57 * @param handle pointer to the CURL instance.
59 void apply(CURL* handle)
61 for (auto& opt: *this) {
67 * @brief Returns reference to the SecurityOptions instance.
68 * @return reference to the SecurityOptions instance.
70 static SecurityOptions& instance()
72 static SecurityOptions inst;
81 } // namespace communication
84 #endif // SECURITYOPTIONS_H