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 _HTTP_REQUEST_
Jan Jongboom 0:910f5949759f 19 #define _HTTP_REQUEST_
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 0:910f5949759f 25 #include "http_parsed_url.h"
Jan Jongboom 31:b3730a2c4f39 26 #include "TCPSocket.h"
Jan Jongboom 0:910f5949759f 27
Jan Jongboom 0:910f5949759f 28 /**
Jan Jongboom 0:910f5949759f 29 * @todo:
Jan Jongboom 0:910f5949759f 30 * - Userinfo parameter is not handled
Jan Jongboom 0:910f5949759f 31 */
Jan Jongboom 0:910f5949759f 32
Jan Jongboom 20:0e63d6a93c02 33 #ifndef HTTP_RECEIVE_BUFFER_SIZE
Jan Jongboom 20:0e63d6a93c02 34 #define HTTP_RECEIVE_BUFFER_SIZE 8 * 1024
Jan Jongboom 20:0e63d6a93c02 35 #endif
Jan Jongboom 0:910f5949759f 36
Jan Jongboom 0:910f5949759f 37 /**
Jan Jongboom 17:6e0025e01b98 38 * \brief HttpRequest implements the logic for interacting with HTTP servers.
Jan Jongboom 0:910f5949759f 39 */
Jan Jongboom 31:b3730a2c4f39 40 class HttpRequest : public HttpRequestBase {
Jan Jongboom 0:910f5949759f 41 public:
Jan Jongboom 31:b3730a2c4f39 42 friend class HttpRequestBase;
Jan Jongboom 31:b3730a2c4f39 43
Jan Jongboom 0:910f5949759f 44 /**
Jan Jongboom 0:910f5949759f 45 * HttpRequest Constructor
Jan Jongboom 0:910f5949759f 46 *
Jan Jongboom 31:b3730a2c4f39 47 * @param[in] network The network interface
Jan Jongboom 31:b3730a2c4f39 48 * @param[in] method HTTP method to use
Jan Jongboom 0:910f5949759f 49 * @param[in] url URL to the resource
Jan Jongboom 31:b3730a2c4f39 50 * @param[in] bodyCallback Callback on which to retrieve chunks of the response body.
Jan Jongboom 31:b3730a2c4f39 51 If not set, the complete body will be allocated on the HttpResponse object,
Jan Jongboom 31:b3730a2c4f39 52 which might use lots of memory.
Jan Jongboom 0:910f5949759f 53 */
Jan Jongboom 31:b3730a2c4f39 54 HttpRequest(NetworkInterface* network, http_method method, const char* url, Callback<void(const char *at, uint32_t length)> bodyCallback = 0)
Jan Jongboom 31:b3730a2c4f39 55 : HttpRequestBase(NULL, bodyCallback)
Jan Jongboom 0:910f5949759f 56 {
Jan Jongboom 31:b3730a2c4f39 57 _error = 0;
Jan Jongboom 31:b3730a2c4f39 58 _response = NULL;
Jan Jongboom 0:910f5949759f 59
Jan Jongboom 31:b3730a2c4f39 60 _parsed_url = new ParsedUrl(url);
Jan Jongboom 31:b3730a2c4f39 61 _request_builder = new HttpRequestBuilder(method, _parsed_url);
Jan Jongboom 11:96e4dcb9c0c2 62
Jan Jongboom 31:b3730a2c4f39 63 _socket = new TCPSocket();
Jan Jongboom 31:b3730a2c4f39 64 ((TCPSocket*)_socket)->open(network);
JohnnyK 40:6ecb52cd17d9 65 network->gethostbyname(_parsed_url->host(), &address);
JohnnyK 40:6ecb52cd17d9 66 address.set_port(_parsed_url->port());
Jan Jongboom 31:b3730a2c4f39 67 _we_created_socket = true;
Jan Jongboom 11:96e4dcb9c0c2 68 }
Jan Jongboom 11:96e4dcb9c0c2 69
Jan Jongboom 11:96e4dcb9c0c2 70 /**
Jan Jongboom 11:96e4dcb9c0c2 71 * HttpRequest Constructor
Jan Jongboom 11:96e4dcb9c0c2 72 *
Jan Jongboom 31:b3730a2c4f39 73 * @param[in] socket An open TCPSocket
Jan Jongboom 31:b3730a2c4f39 74 * @param[in] method HTTP method to use
Jan Jongboom 11:96e4dcb9c0c2 75 * @param[in] url URL to the resource
Jan Jongboom 31:b3730a2c4f39 76 * @param[in] bodyCallback Callback on which to retrieve chunks of the response body.
Jan Jongboom 11:96e4dcb9c0c2 77 If not set, the complete body will be allocated on the HttpResponse object,
Jan Jongboom 11:96e4dcb9c0c2 78 which might use lots of memory.
Jan Jongboom 11:96e4dcb9c0c2 79 */
Jan Jongboom 31:b3730a2c4f39 80 HttpRequest(TCPSocket* socket, http_method method, const char* url, Callback<void(const char *at, uint32_t length)> bodyCallback = 0)
Jan Jongboom 31:b3730a2c4f39 81 : HttpRequestBase(socket, bodyCallback)
Jan Jongboom 11:96e4dcb9c0c2 82 {
Jan Jongboom 31:b3730a2c4f39 83 _error = 0;
Jan Jongboom 31:b3730a2c4f39 84 _response = NULL;
Jan Jongboom 11:96e4dcb9c0c2 85
Jan Jongboom 31:b3730a2c4f39 86 _parsed_url = new ParsedUrl(url);
Jan Jongboom 31:b3730a2c4f39 87 _request_builder = new HttpRequestBuilder(method, _parsed_url);
Jan Jongboom 0:910f5949759f 88
Jan Jongboom 31:b3730a2c4f39 89 _we_created_socket = false;
Jan Jongboom 23:15fa2726f793 90 }
Jan Jongboom 23:15fa2726f793 91
Jan Jongboom 31:b3730a2c4f39 92 virtual ~HttpRequest() {
Jan Jongboom 23:15fa2726f793 93 }
Jan Jongboom 23:15fa2726f793 94
Jan Jongboom 31:b3730a2c4f39 95 protected:
Jan Jongboom 0:910f5949759f 96
JohnnyK 40:6ecb52cd17d9 97 virtual nsapi_error_t connect_socket(SocketAddress addr) {
JohnnyK 40:6ecb52cd17d9 98 return ((TCPSocket*)_socket)->connect(addr);
Jan Jongboom 0:910f5949759f 99 }
Jan Jongboom 0:910f5949759f 100 };
Jan Jongboom 0:910f5949759f 101
Jan Jongboom 0:910f5949759f 102 #endif // _HTTP_REQUEST_