src/HTTPHandler.h
branchv_0
changeset 9 9fdbfbe24161
parent 8 3f4e60990393
child 11 6b913e82f52a
equal deleted inserted replaced
8:3f4e60990393 9:9fdbfbe24161
   146 		for (const HeaderDefinition& h : requestHeaders) {
   146 		for (const HeaderDefinition& h : requestHeaders) {
   147 			request.headers.push_back(convertor.to_bytes(h.name));
   147 			request.headers.push_back(convertor.to_bytes(h.name));
   148 			request.headers.push_back(convertor.to_bytes(h.value));
   148 			request.headers.push_back(convertor.to_bytes(h.value));
   149 		}
   149 		}
   150 
   150 
   151 		HTTPClient::Response response = http->exchange(request);
   151 		std::string body;
   152 		relpipe::common::type::Integer responseCode = response.responseCode;
   152 		relpipe::common::type::Integer responseCode = -1;
       
   153 
       
   154 		try {
       
   155 			HTTPClient::Response response = http->exchange(request);
       
   156 			responseCode = response.responseCode;
       
   157 			body = response.body;
       
   158 
       
   159 			for (size_t i = 0; i < response.headers.size(); i += 2) {
       
   160 				responseHeaders.push_back(convertor.from_bytes(request.url));
       
   161 				responseHeaders.push_back(convertor.from_bytes(response.headers[i]));
       
   162 				responseHeaders.push_back(convertor.from_bytes(response.headers[i + 1]));
       
   163 			}
       
   164 		} catch (const HTTPClient::Exception& e) {
       
   165 			body = e.what();
       
   166 			// TODO: move error message into separate attribute?
       
   167 		}
   153 
   168 
   154 		relationalWriter->writeAttribute(value);
   169 		relationalWriter->writeAttribute(value);
   155 		relationalWriter->writeAttribute(convertor.from_bytes(response.body));
   170 		relationalWriter->writeAttribute(convertor.from_bytes(body));
   156 		relationalWriter->writeAttribute(&responseCode, typeid (responseCode));
   171 		relationalWriter->writeAttribute(&responseCode, typeid (responseCode));
   157 
       
   158 		for (size_t i = 0; i < response.headers.size(); i += 2) {
       
   159 			responseHeaders.push_back(convertor.from_bytes(request.url));
       
   160 			responseHeaders.push_back(convertor.from_bytes(response.headers[i]));
       
   161 			responseHeaders.push_back(convertor.from_bytes(response.headers[i + 1]));
       
   162 		}
       
   163 	}
   172 	}
   164 
   173 
   165 public:
   174 public:
   166 
   175 
   167 	void endOfPipe() {
   176 	void endOfPipe() {