Fork of SandBox's original mbed-http (https://os.mbed.com/teams/sandbox/code/mbed-http/) and update for MbedOS6+ Content of TESTS folder was replaced with basic examples form original SandBox's HelloWorld

Committer:
JohnnyK
Date:
Sun May 30 19:45:32 2021 +0000
Revision:
41:cc1a8c63f159
Parent:
40:6ecb52cd17d9
change test program to two basic example from SandBox's helloworld program ofc reworked.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jan Jongboom 0:910f5949759f 1 /*
Jan Jongboom 0:910f5949759f 2 * PackageLicenseDeclared: Apache-2.0
Jan Jongboom 0:910f5949759f 3 * Copyright (c) 2017 ARM Limited
Jan Jongboom 0:910f5949759f 4 *
Jan Jongboom 0:910f5949759f 5 * Licensed under the Apache License, Version 2.0 (the "License");
Jan Jongboom 0:910f5949759f 6 * you may not use this file except in compliance with the License.
Jan Jongboom 0:910f5949759f 7 * You may obtain a copy of the License at
Jan Jongboom 0:910f5949759f 8 *
Jan Jongboom 0:910f5949759f 9 * http://www.apache.org/licenses/LICENSE-2.0
Jan Jongboom 0:910f5949759f 10 *
Jan Jongboom 0:910f5949759f 11 * Unless required by applicable law or agreed to in writing, software
Jan Jongboom 0:910f5949759f 12 * distributed under the License is distributed on an "AS IS" BASIS,
Jan Jongboom 0:910f5949759f 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Jan Jongboom 0:910f5949759f 14 * See the License for the specific language governing permissions and
Jan Jongboom 0:910f5949759f 15 * limitations under the License.
Jan Jongboom 0:910f5949759f 16 */
Jan Jongboom 0:910f5949759f 17
Jan Jongboom 0:910f5949759f 18 #ifndef _MBED_HTTPS_REQUEST_H_
Jan Jongboom 0:910f5949759f 19 #define _MBED_HTTPS_REQUEST_H_
Jan Jongboom 0:910f5949759f 20
Jan Jongboom 0:910f5949759f 21 #include <string>
Jan Jongboom 0:910f5949759f 22 #include <vector>
Jan Jongboom 0:910f5949759f 23 #include <map>
Jan Jongboom 31:b3730a2c4f39 24 #include "http_request_base.h"
Jan Jongboom 31:b3730a2c4f39 25 #include "TLSSocket.h"
Jan Jongboom 0:910f5949759f 26
Jan Jongboom 20:0e63d6a93c02 27 #ifndef HTTP_RECEIVE_BUFFER_SIZE
Jan Jongboom 20:0e63d6a93c02 28 #define HTTP_RECEIVE_BUFFER_SIZE 8 * 1024
Jan Jongboom 20:0e63d6a93c02 29 #endif
Jan Jongboom 20:0e63d6a93c02 30
Jan Jongboom 0:910f5949759f 31 /**
Jan Jongboom 0:910f5949759f 32 * \brief HttpsRequest implements the logic for interacting with HTTPS servers.
Jan Jongboom 0:910f5949759f 33 */
Jan Jongboom 31:b3730a2c4f39 34 class HttpsRequest : public HttpRequestBase {
Jan Jongboom 0:910f5949759f 35 public:
Jan Jongboom 0:910f5949759f 36 /**
Jan Jongboom 0:910f5949759f 37 * HttpsRequest Constructor
Jan Jongboom 0:910f5949759f 38 * Initializes the TCP socket, sets up event handlers and flags.
Jan Jongboom 0:910f5949759f 39 *
Jan Jongboom 31:b3730a2c4f39 40 * @param[in] network The network interface
Jan Jongboom 0:910f5949759f 41 * @param[in] ssl_ca_pem String containing the trusted CAs
Jan Jongboom 0:910f5949759f 42 * @param[in] method HTTP method to use
Jan Jongboom 0:910f5949759f 43 * @param[in] url URL to the resource
Jan Jongboom 0:910f5949759f 44 * @param[in] body_callback Callback on which to retrieve chunks of the response body.
Jan Jongboom 0:910f5949759f 45 If not set, the complete body will be allocated on the HttpResponse object,
Jan Jongboom 0:910f5949759f 46 which might use lots of memory.
Jan Jongboom 0:910f5949759f 47 */
Jan Jongboom 31:b3730a2c4f39 48 HttpsRequest(NetworkInterface* network,
Jan Jongboom 0:910f5949759f 49 const char* ssl_ca_pem,
Jan Jongboom 0:910f5949759f 50 http_method method,
Jan Jongboom 0:910f5949759f 51 const char* url,
Jan Jongboom 31:b3730a2c4f39 52 Callback<void(const char *at, uint32_t length)> body_callback = 0)
Jan Jongboom 31:b3730a2c4f39 53 : HttpRequestBase(NULL, body_callback)
Jan Jongboom 0:910f5949759f 54 {
Jan Jongboom 0:910f5949759f 55 _parsed_url = new ParsedUrl(url);
Jan Jongboom 0:910f5949759f 56 _request_builder = new HttpRequestBuilder(method, _parsed_url);
Jan Jongboom 0:910f5949759f 57 _response = NULL;
Jan Jongboom 0:910f5949759f 58
Jan Jongboom 31:b3730a2c4f39 59 _socket = new TLSSocket();
Jan Jongboom 31:b3730a2c4f39 60 ((TLSSocket*)_socket)->open(network);
Jan Jongboom 31:b3730a2c4f39 61 ((TLSSocket*)_socket)->set_root_ca_cert(ssl_ca_pem);
JohnnyK 40:6ecb52cd17d9 62 network->gethostbyname(_parsed_url->host(), &address);
JohnnyK 40:6ecb52cd17d9 63 address.set_port(_parsed_url->port());
Jan Jongboom 31:b3730a2c4f39 64 _we_created_socket = true;
Jan Jongboom 11:96e4dcb9c0c2 65 }
Jan Jongboom 0:910f5949759f 66
Jan Jongboom 11:96e4dcb9c0c2 67 /**
Jan Jongboom 11:96e4dcb9c0c2 68 * HttpsRequest Constructor
Jan Jongboom 11:96e4dcb9c0c2 69 * Sets up event handlers and flags.
Jan Jongboom 11:96e4dcb9c0c2 70 *
Jan Jongboom 11:96e4dcb9c0c2 71 * @param[in] socket A connected TLSSocket
Jan Jongboom 11:96e4dcb9c0c2 72 * @param[in] method HTTP method to use
Jan Jongboom 11:96e4dcb9c0c2 73 * @param[in] url URL to the resource
Jan Jongboom 11:96e4dcb9c0c2 74 * @param[in] body_callback Callback on which to retrieve chunks of the response body.
Jan Jongboom 11:96e4dcb9c0c2 75 If not set, the complete body will be allocated on the HttpResponse object,
Jan Jongboom 11:96e4dcb9c0c2 76 which might use lots of memory.
Jan Jongboom 11:96e4dcb9c0c2 77 */
Jan Jongboom 11:96e4dcb9c0c2 78 HttpsRequest(TLSSocket* socket,
Jan Jongboom 11:96e4dcb9c0c2 79 http_method method,
Jan Jongboom 11:96e4dcb9c0c2 80 const char* url,
Jan Jongboom 31:b3730a2c4f39 81 Callback<void(const char *at, uint32_t length)> body_callback = 0)
Jan Jongboom 31:b3730a2c4f39 82 : HttpRequestBase(socket, body_callback)
Jan Jongboom 11:96e4dcb9c0c2 83 {
Jan Jongboom 11:96e4dcb9c0c2 84 _parsed_url = new ParsedUrl(url);
Jan Jongboom 11:96e4dcb9c0c2 85 _body_callback = body_callback;
Jan Jongboom 11:96e4dcb9c0c2 86 _request_builder = new HttpRequestBuilder(method, _parsed_url);
Jan Jongboom 11:96e4dcb9c0c2 87 _response = NULL;
Jan Jongboom 11:96e4dcb9c0c2 88
Jan Jongboom 31:b3730a2c4f39 89 _we_created_socket = false;
Jan Jongboom 0:910f5949759f 90 }
Jan Jongboom 0:910f5949759f 91
Jan Jongboom 31:b3730a2c4f39 92 virtual ~HttpsRequest() {}
Jan Jongboom 11:96e4dcb9c0c2 93
Jan Jongboom 0:910f5949759f 94 protected:
JohnnyK 40:6ecb52cd17d9 95 virtual nsapi_error_t connect_socket(SocketAddress addr) {
JohnnyK 40:6ecb52cd17d9 96 return ((TLSSocket*)_socket)->connect(addr);
Jan Jongboom 23:15fa2726f793 97 }
Jan Jongboom 0:910f5949759f 98 };
Jan Jongboom 0:910f5949759f 99
Jan Jongboom 0:910f5949759f 100 #endif // _MBED_HTTPS_REQUEST_H_