// // Copyright (C) 2009 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Implementation of common HTTP related functions. #include "update_engine/common/http_common.h" #include <cstdlib> #include <base/macros.h> namespace chromeos_update_engine { const char *GetHttpResponseDescription(HttpResponseCode code) { static const struct { HttpResponseCode code; const char* description; } http_response_table[] = { { kHttpResponseOk, "OK" }, { kHttpResponseCreated, "Created" }, { kHttpResponseAccepted, "Accepted" }, { kHttpResponseNonAuthInfo, "Non-Authoritative Information" }, { kHttpResponseNoContent, "No Content" }, { kHttpResponseResetContent, "Reset Content" }, { kHttpResponsePartialContent, "Partial Content" }, { kHttpResponseMultipleChoices, "Multiple Choices" }, { kHttpResponseMovedPermanently, "Moved Permanently" }, { kHttpResponseFound, "Found" }, { kHttpResponseSeeOther, "See Other" }, { kHttpResponseNotModified, "Not Modified" }, { kHttpResponseUseProxy, "Use Proxy" }, { kHttpResponseTempRedirect, "Temporary Redirect" }, { kHttpResponseBadRequest, "Bad Request" }, { kHttpResponseUnauth, "Unauthorized" }, { kHttpResponseForbidden, "Forbidden" }, { kHttpResponseNotFound, "Not Found" }, { kHttpResponseRequestTimeout, "Request Timeout" }, { kHttpResponseInternalServerError, "Internal Server Error" }, { kHttpResponseNotImplemented, "Not Implemented" }, { kHttpResponseServiceUnavailable, "Service Unavailable" }, { kHttpResponseVersionNotSupported, "HTTP Version Not Supported" }, }; bool is_found = false; size_t i; for (i = 0; i < arraysize(http_response_table); i++) if ((is_found = (http_response_table[i].code == code))) break; return (is_found ? http_response_table[i].description : "(unsupported)"); } HttpResponseCode StringToHttpResponseCode(const char *s) { return static_cast<HttpResponseCode>(strtoul(s, nullptr, 10)); } const char *GetHttpContentTypeString(HttpContentType type) { static const struct { HttpContentType type; const char* str; } http_content_type_table[] = { { kHttpContentTypeTextXml, "text/xml" }, }; bool is_found = false; size_t i; for (i = 0; i < arraysize(http_content_type_table); i++) if ((is_found = (http_content_type_table[i].type == type))) break; return (is_found ? http_content_type_table[i].str : nullptr); } } // namespace chromeos_update_engine