blob: 43871776360d431a8de72421c2a4ec495f17e9ff [file] [log] [blame]
// Copyright 2018 The Fuchsia 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 "src/cobalt/bin/app/utils.h"
#include <lib/syslog/cpp/macros.h>
#include "third_party/cobalt/src/lib/util/file_util.h"
#include "third_party/cobalt/src/lib/util/pem_util.h"
namespace cobalt {
using observation_store::ObservationStore;
fuchsia::cobalt::Status ToCobaltStatus(ObservationStore::StoreStatus s) {
switch (s) {
case ObservationStore::kOk:
return fuchsia::cobalt::Status::OK;
case ObservationStore::kObservationTooBig:
return fuchsia::cobalt::Status::EVENT_TOO_BIG;
case ObservationStore::kStoreFull:
return fuchsia::cobalt::Status::BUFFER_FULL;
case ObservationStore::kWriteFailed:
return fuchsia::cobalt::Status::INTERNAL_ERROR;
}
}
fuchsia::cobalt::Status ToCobaltStatus(logger::Status s) {
switch (s) {
case logger::Status::kOK:
return fuchsia::cobalt::Status::OK;
case logger::Status::kInvalidArguments:
case logger::Status::kInvalidConfig:
return fuchsia::cobalt::Status::INVALID_ARGUMENTS;
case logger::Status::kTooBig:
return fuchsia::cobalt::Status::EVENT_TOO_BIG;
case logger::Status::kFull:
return fuchsia::cobalt::Status::BUFFER_FULL;
case logger::Status::kOther:
return fuchsia::cobalt::Status::INTERNAL_ERROR;
default: // Needed so that the Cobalt core enum can be added to.
FX_LOGS(ERROR) << "Unimplemented translation for enum value: " << s;
return fuchsia::cobalt::Status::INTERNAL_ERROR;
}
}
fuchsia::cobalt::Status ToCobaltStatus(util::Status s) {
switch (s.error_code()) {
case util::StatusCode::OK:
return fuchsia::cobalt::Status::OK;
case util::StatusCode::INVALID_ARGUMENT:
return fuchsia::cobalt::Status::INVALID_ARGUMENTS;
case util::StatusCode::RESOURCE_EXHAUSTED:
return fuchsia::cobalt::Status::BUFFER_FULL;
case util::StatusCode::CANCELLED:
case util::StatusCode::UNKNOWN:
case util::StatusCode::DEADLINE_EXCEEDED:
case util::StatusCode::NOT_FOUND:
case util::StatusCode::ALREADY_EXISTS:
case util::StatusCode::PERMISSION_DENIED:
case util::StatusCode::FAILED_PRECONDITION:
case util::StatusCode::ABORTED:
case util::StatusCode::OUT_OF_RANGE:
case util::StatusCode::UNIMPLEMENTED:
case util::StatusCode::INTERNAL:
case util::StatusCode::UNAVAILABLE:
case util::StatusCode::DATA_LOSS:
case util::StatusCode::UNAUTHENTICATED:
default:
return fuchsia::cobalt::Status::INTERNAL_ERROR;
}
}
fuchsia::metrics::Status ToMetricsStatus(ObservationStore::StoreStatus s) {
switch (s) {
case ObservationStore::kOk:
return fuchsia::metrics::Status::OK;
case ObservationStore::kObservationTooBig:
return fuchsia::metrics::Status::EVENT_TOO_BIG;
case ObservationStore::kStoreFull:
return fuchsia::metrics::Status::BUFFER_FULL;
case ObservationStore::kWriteFailed:
return fuchsia::metrics::Status::INTERNAL_ERROR;
}
}
fuchsia::metrics::Status ToMetricsStatus(logger::Status s) {
switch (s) {
case logger::Status::kOK:
return fuchsia::metrics::Status::OK;
case logger::Status::kInvalidArguments:
case logger::Status::kInvalidConfig:
return fuchsia::metrics::Status::INVALID_ARGUMENTS;
case logger::Status::kTooBig:
return fuchsia::metrics::Status::EVENT_TOO_BIG;
case logger::Status::kFull:
return fuchsia::metrics::Status::BUFFER_FULL;
case logger::Status::kOther:
return fuchsia::metrics::Status::INTERNAL_ERROR;
default: // Needed so that the Cobalt core enum can be added to.
FX_LOGS(ERROR) << "Unimplemented translation for enum value: " << s;
return fuchsia::metrics::Status::INTERNAL_ERROR;
}
}
fuchsia::metrics::Status ToMetricsStatus(util::Status s) {
switch (s.error_code()) {
case util::StatusCode::OK:
return fuchsia::metrics::Status::OK;
case util::StatusCode::INVALID_ARGUMENT:
return fuchsia::metrics::Status::INVALID_ARGUMENTS;
case util::StatusCode::RESOURCE_EXHAUSTED:
return fuchsia::metrics::Status::BUFFER_FULL;
case util::StatusCode::CANCELLED:
case util::StatusCode::UNKNOWN:
case util::StatusCode::DEADLINE_EXCEEDED:
case util::StatusCode::NOT_FOUND:
case util::StatusCode::ALREADY_EXISTS:
case util::StatusCode::PERMISSION_DENIED:
case util::StatusCode::FAILED_PRECONDITION:
case util::StatusCode::ABORTED:
case util::StatusCode::OUT_OF_RANGE:
case util::StatusCode::UNIMPLEMENTED:
case util::StatusCode::INTERNAL:
case util::StatusCode::UNAVAILABLE:
case util::StatusCode::DATA_LOSS:
case util::StatusCode::UNAUTHENTICATED:
default:
return fuchsia::metrics::Status::INTERNAL_ERROR;
}
}
std::string ReadPublicKeyPem(const std::string& pem_file_path) {
FX_VLOGS(2) << "Reading PEM file at " << pem_file_path;
std::string pem_out;
FX_CHECK(util::PemUtil::ReadTextFile(pem_file_path, &pem_out))
<< "Unable to read file public key PEM file from path " << pem_file_path << ".";
return pem_out;
}
} // namespace cobalt