diff options
author | Mauro Sardara <msardara@cisco.com> | 2019-03-19 14:26:52 +0100 |
---|---|---|
committer | Mauro Sardara <msardara@cisco.com> | 2019-03-23 15:05:53 +0100 |
commit | 1ad06afe9f952642a26f4d28239cf05eb3283eb7 (patch) | |
tree | 1ea58529d64a38597cd09f78653cc784c4b61d79 /apps/src/http-server/http-client | |
parent | e6d4612011483b267dc9f47c5d2b2444dd88f402 (diff) |
[HICN-6] ATS Working, little refactoring of apps
Change-Id: I174815b70bf3a9fbe99ffab7dd2914be04d364b9
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'apps/src/http-server/http-client')
-rw-r--r-- | apps/src/http-server/http-client/http_client.h | 37 | ||||
-rw-r--r-- | apps/src/http-server/http-client/http_client_icn.cc | 37 | ||||
-rw-r--r-- | apps/src/http-server/http-client/http_client_icn.h | 34 | ||||
-rw-r--r-- | apps/src/http-server/http-client/http_client_tcp.cc | 99 | ||||
-rw-r--r-- | apps/src/http-server/http-client/http_client_tcp.h | 36 |
5 files changed, 0 insertions, 243 deletions
diff --git a/apps/src/http-server/http-client/http_client.h b/apps/src/http-server/http-client/http_client.h deleted file mode 100644 index b2dbd1ffd..000000000 --- a/apps/src/http-server/http-client/http_client.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "config.h" - -#include <string> - -#if defined(HICNET) -#include <hicn/transport/http/facade.h> -#elif defined(ICNET) -#include <icnet/icnet_http_facade.h> -#else -#error "No ICN tranport library to which link against." -#endif - -class HTTPClient { -public: - virtual ~HTTPClient() = default; - - virtual void setTcp() = 0; - - virtual bool download(const std::string &url, std::ostream &out) = 0; -}; diff --git a/apps/src/http-server/http-client/http_client_icn.cc b/apps/src/http-server/http-client/http_client_icn.cc deleted file mode 100644 index 862741bd9..000000000 --- a/apps/src/http-server/http-client/http_client_icn.cc +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "http_client_icn.h" -#include "response.h" - -#include <curl/curl.h> - -using namespace std; - -HTTPClientIcn::HTTPClientIcn(uint32_t timeout) { - std::chrono::seconds _timeout(timeout); - connection_.setTimeout(_timeout); -} - -void HTTPClientIcn::setTcp() {} - -HTTPClientIcn::~HTTPClientIcn() {} - -bool HTTPClientIcn::download(const std::string &url, std::ostream &out) { - connection_.get(url); - libl4::http::HTTPResponse r = connection_.response(); - out.write(reinterpret_cast<const char *>(r.data()), r.size()); - return true; -} diff --git a/apps/src/http-server/http-client/http_client_icn.h b/apps/src/http-server/http-client/http_client_icn.h deleted file mode 100644 index 8f5e9ae44..000000000 --- a/apps/src/http-server/http-client/http_client_icn.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "http_client.h" - -#include <string> - -class HTTPClientIcn : public HTTPClient { -public: - HTTPClientIcn(uint32_t timeout); - - void setTcp(); - - ~HTTPClientIcn(); - - bool download(const std::string &url, std::ostream &out); - -private: - libl4::http::HTTPClientConnection connection_; -}; diff --git a/apps/src/http-server/http-client/http_client_tcp.cc b/apps/src/http-server/http-client/http_client_tcp.cc deleted file mode 100644 index 08474d71c..000000000 --- a/apps/src/http-server/http-client/http_client_tcp.cc +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "http_client_tcp.h" -#include "response.h" - -#include <curl/curl.h> -#include <iostream> -#include <sstream> -#include <stdio.h> -#include <string.h> - -using namespace std; - -struct UserData { - void *out; - void *curl; - bool tcp; - bool first_time; -}; - -typedef struct UserData UserData; - -size_t write_data(void *ptr, size_t size, size_t nmemb, void *user_data) { - - UserData *data = (UserData *)user_data; - - if (data->first_time) { - double cl; - - int res = - curl_easy_getinfo(data->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &cl); - - if (res >= 0) { - *(ostream *)data->out - << "HTTP/1.0 200 OK\r\nContent-Length: " << std::size_t(cl) - << "\r\n\r\n"; - } - - data->first_time = false; - } - - ((icn_httpserver::Response *)data->out) - ->write((const char *)ptr, size * nmemb); - // ((icn_httpserver::Response*) data->out)->send(); - return size * nmemb; -} - -HTTPClientTcp::HTTPClientTcp() { - tcp_ = false; - first_time = true; - curl_ = curl_easy_init(); -} - -void HTTPClientTcp::setTcp() { tcp_ = true; } - -HTTPClientTcp::~HTTPClientTcp() { curl_easy_cleanup(curl_); } - -bool HTTPClientTcp::download(const std::string &url, std::ostream &out) { - curl_easy_setopt(curl_, CURLOPT_URL, url.c_str()); - - /* example.com is redirected, so we tell libcurl to follow redirection */ - curl_easy_setopt(curl_, CURLOPT_FOLLOWLOCATION, 1L); - curl_easy_setopt(curl_, CURLOPT_NOSIGNAL, 1); - curl_easy_setopt(curl_, CURLOPT_ACCEPT_ENCODING, "deflate"); - - curl_easy_setopt(curl_, CURLOPT_WRITEFUNCTION, write_data); - UserData data; - data.out = &out; - data.curl = curl_; - data.tcp = tcp_; - data.first_time = first_time; - - curl_easy_setopt(curl_, CURLOPT_WRITEDATA, &data); - - /* Perform the request, res will get the return code */ - CURLcode res = curl_easy_perform(curl_); - - /* Check for errors */ - if (res != CURLE_OK) { - fprintf(stderr, "curl_easy_perform() failed: %s\n", - curl_easy_strerror(res)); - return false; - } - - return true; -} diff --git a/apps/src/http-server/http-client/http_client_tcp.h b/apps/src/http-server/http-client/http_client_tcp.h deleted file mode 100644 index e1d81ada0..000000000 --- a/apps/src/http-server/http-client/http_client_tcp.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "http_client.h" - -#include <string> - -class HTTPClientTcp : public HTTPClient { -public: - HTTPClientTcp(); - - void setTcp(); - - ~HTTPClientTcp(); - - bool download(const std::string &url, std::ostream &out); - -private: - bool first_time; - bool tcp_; - void *curl_; -}; |