blob: 967fb5146e6c7611594572c9318a7fff0568cd2b [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 "services/http_server/public/http_server_util.h"
#include "base/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);
DCHECK_EQ(MOJO_RESULT_OK, result);
result = WriteDataRaw(
producer_handle.get(), body.c_str(), &num_bytes,
MOJO_WRITE_DATA_FLAG_ALL_OR_NONE);
DCHECK_EQ(MOJO_RESULT_OK, result);
response->status_code = status_code;
response->content_length = num_bytes;
return response.Pass();
}
} // namespace http_server