Fork of mbed-http

Fork of mbed-http by sandbox

Committer:
Jan Jongboom
Date:
Thu Feb 16 11:35:56 2017 +0100
Revision:
0:910f5949759f
Child:
3:8a6b003e3874
Initial commit

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_HTTP_HTTP_RESPONSE
Jan Jongboom 0:910f5949759f 19 #define _MBED_HTTP_HTTP_RESPONSE
Jan Jongboom 0:910f5949759f 20 #include <string>
Jan Jongboom 0:910f5949759f 21 #include <vector>
Jan Jongboom 0:910f5949759f 22 #include "http_parser.h"
Jan Jongboom 0:910f5949759f 23
Jan Jongboom 0:910f5949759f 24 using namespace std;
Jan Jongboom 0:910f5949759f 25
Jan Jongboom 0:910f5949759f 26 class HttpResponse {
Jan Jongboom 0:910f5949759f 27 public:
Jan Jongboom 0:910f5949759f 28 HttpResponse() {
Jan Jongboom 0:910f5949759f 29 status_code = 0;
Jan Jongboom 0:910f5949759f 30 concat_header_field = false;
Jan Jongboom 0:910f5949759f 31 concat_header_value = false;
Jan Jongboom 0:910f5949759f 32 }
Jan Jongboom 0:910f5949759f 33
Jan Jongboom 0:910f5949759f 34 void set_status(int a_status_code, string a_status_message) {
Jan Jongboom 0:910f5949759f 35 status_code = a_status_code;
Jan Jongboom 0:910f5949759f 36 status_message = a_status_message;
Jan Jongboom 0:910f5949759f 37 }
Jan Jongboom 0:910f5949759f 38
Jan Jongboom 0:910f5949759f 39 int get_status_code() {
Jan Jongboom 0:910f5949759f 40 return status_code;
Jan Jongboom 0:910f5949759f 41 }
Jan Jongboom 0:910f5949759f 42
Jan Jongboom 0:910f5949759f 43 string get_status_message() {
Jan Jongboom 0:910f5949759f 44 return status_message;
Jan Jongboom 0:910f5949759f 45 }
Jan Jongboom 0:910f5949759f 46
Jan Jongboom 0:910f5949759f 47 void set_header_field(string field) {
Jan Jongboom 0:910f5949759f 48 concat_header_value = false;
Jan Jongboom 0:910f5949759f 49
Jan Jongboom 0:910f5949759f 50 // headers can be chunked
Jan Jongboom 0:910f5949759f 51 if (concat_header_field) {
Jan Jongboom 0:910f5949759f 52 header_fields[header_fields.size() - 1] = header_fields[header_fields.size() - 1] + field;
Jan Jongboom 0:910f5949759f 53 }
Jan Jongboom 0:910f5949759f 54 else {
Jan Jongboom 0:910f5949759f 55 header_fields.push_back(field);
Jan Jongboom 0:910f5949759f 56 }
Jan Jongboom 0:910f5949759f 57
Jan Jongboom 0:910f5949759f 58 concat_header_field = true;
Jan Jongboom 0:910f5949759f 59 }
Jan Jongboom 0:910f5949759f 60
Jan Jongboom 0:910f5949759f 61 void set_header_value(string value) {
Jan Jongboom 0:910f5949759f 62 concat_header_field = false;
Jan Jongboom 0:910f5949759f 63
Jan Jongboom 0:910f5949759f 64 // headers can be chunked
Jan Jongboom 0:910f5949759f 65 if (concat_header_value) {
Jan Jongboom 0:910f5949759f 66 header_values[header_values.size() - 1] = header_values[header_values.size() - 1] + value;
Jan Jongboom 0:910f5949759f 67 }
Jan Jongboom 0:910f5949759f 68 else {
Jan Jongboom 0:910f5949759f 69 header_values.push_back(value);
Jan Jongboom 0:910f5949759f 70 }
Jan Jongboom 0:910f5949759f 71
Jan Jongboom 0:910f5949759f 72 concat_header_value = true;
Jan Jongboom 0:910f5949759f 73 }
Jan Jongboom 0:910f5949759f 74
Jan Jongboom 0:910f5949759f 75 size_t get_headers_length() {
Jan Jongboom 0:910f5949759f 76 return header_fields.size();
Jan Jongboom 0:910f5949759f 77 }
Jan Jongboom 0:910f5949759f 78
Jan Jongboom 0:910f5949759f 79 vector<string> get_headers_fields() {
Jan Jongboom 0:910f5949759f 80 return header_fields;
Jan Jongboom 0:910f5949759f 81 }
Jan Jongboom 0:910f5949759f 82
Jan Jongboom 0:910f5949759f 83 vector<string> get_headers_values() {
Jan Jongboom 0:910f5949759f 84 return header_values;
Jan Jongboom 0:910f5949759f 85 }
Jan Jongboom 0:910f5949759f 86
Jan Jongboom 0:910f5949759f 87 void set_body(string v) {
Jan Jongboom 0:910f5949759f 88 body = body + v;
Jan Jongboom 0:910f5949759f 89 }
Jan Jongboom 0:910f5949759f 90
Jan Jongboom 0:910f5949759f 91 string get_body() {
Jan Jongboom 0:910f5949759f 92 return body;
Jan Jongboom 0:910f5949759f 93 }
Jan Jongboom 0:910f5949759f 94
Jan Jongboom 0:910f5949759f 95 private:
Jan Jongboom 0:910f5949759f 96 int status_code;
Jan Jongboom 0:910f5949759f 97 string status_message;
Jan Jongboom 0:910f5949759f 98
Jan Jongboom 0:910f5949759f 99 vector<string> header_fields;
Jan Jongboom 0:910f5949759f 100 vector<string> header_values;
Jan Jongboom 0:910f5949759f 101
Jan Jongboom 0:910f5949759f 102 bool concat_header_field;
Jan Jongboom 0:910f5949759f 103 bool concat_header_value;
Jan Jongboom 0:910f5949759f 104
Jan Jongboom 0:910f5949759f 105 string body;
Jan Jongboom 0:910f5949759f 106 };
Jan Jongboom 0:910f5949759f 107 #endif