blob: 4307beaf8ecd2f23d35aa91ca7eb8f418328b1a0 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "http_server/public/cpp/http_server_util.h"
#include "mojo/public/cpp/environment/logging.h"
#include "mojo/public/cpp/system/data_pipe.h"
namespace http_server {
HttpResponsePtr CreateHttpResponse(uint32_t status_code,
const std::string& body) {
HttpResponsePtr response = HttpResponse::New();
mojo::ScopedDataPipeProducerHandle producer_handle;
uint32_t num_bytes = static_cast<uint32_t>(body.size());
MojoCreateDataPipeOptions options = {sizeof(MojoCreateDataPipeOptions),
MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE,
1,
num_bytes};
MojoResult result =
CreateDataPipe(&options, &producer_handle, &response->body);
MOJO_DCHECK(MOJO_RESULT_OK == result);
result = WriteDataRaw(producer_handle.get(), body.c_str(), &num_bytes,
MOJO_WRITE_DATA_FLAG_ALL_OR_NONE);
MOJO_DCHECK(MOJO_RESULT_OK == result);
response->status_code = status_code;
response->content_length = num_bytes;
return response.Pass();
}
} // namespace http_server