1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2009 The Android Open Source Project
3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License");
5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License.
6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at
7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//      http://www.apache.org/licenses/LICENSE-2.0
9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software
11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS,
12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and
14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License.
15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
169bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold
179bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold// This file contains general definitions used in implementing, testing and
189bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold// emulating communication over HTTP.
199bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold
2039910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#ifndef UPDATE_ENGINE_COMMON_HTTP_COMMON_H_
2139910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#define UPDATE_ENGINE_COMMON_HTTP_COMMON_H_
229bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold
232447c67957a652cbece2e73fd295dc975571d67fAlex Deymonamespace chromeos_update_engine {
249bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold
259bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold// Enumeration type for HTTP response codes.
269bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnoldenum HttpResponseCode {
279bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseUndefined           = 0,
289bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseOk                  = 200,
299bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseCreated             = 201,
309bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseAccepted            = 202,
319bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseNonAuthInfo         = 203,
329bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseNoContent           = 204,
339bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseResetContent        = 205,
349bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponsePartialContent      = 206,
359bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseMultipleChoices     = 300,
369bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseMovedPermanently    = 301,
379bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseFound               = 302,
389bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseSeeOther            = 303,
399bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseNotModified         = 304,
409bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseUseProxy            = 305,
419bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseTempRedirect        = 307,
429bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseBadRequest          = 400,
439bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseUnauth              = 401,
449bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseForbidden           = 403,
459bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseNotFound            = 404,
469bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseRequestTimeout      = 408,
47e4ad2508de4d69d7a90d3ce441efe2c82c55bd1dGilad Arnold  kHttpResponseReqRangeNotSat      = 416,
489bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseInternalServerError = 500,
499bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseNotImplemented      = 501,
509bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseServiceUnavailable  = 503,
519bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold  kHttpResponseVersionNotSupported = 505,
529bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold};
539bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold
549bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold// Returns a standard HTTP status line string for a given response code.
559bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnoldconst char *GetHttpResponseDescription(HttpResponseCode code);
569bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold
579bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold// Converts a string beginning with an HTTP error code into numerical value.
589bedeb51f80c9547269eef6c2ec09596033bb818Gilad ArnoldHttpResponseCode StringToHttpResponseCode(const char *s);
599bedeb51f80c9547269eef6c2ec09596033bb818Gilad Arnold
609dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold
619dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold// Enumeration type for HTTP Content-Type.
629dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnoldenum HttpContentType {
639dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold  kHttpContentTypeUnspecified = 0,
649dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold  kHttpContentTypeTextXml,
659dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold};
669dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold
679dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold// Returns a standard HTTP Content-Type string.
689dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnoldconst char *GetHttpContentTypeString(HttpContentType type);
699dd1e7c6bbc605c2150800f763c596ff0a4ad1c1Gilad Arnold
702447c67957a652cbece2e73fd295dc975571d67fAlex Deymo}  // namespace chromeos_update_engine
712447c67957a652cbece2e73fd295dc975571d67fAlex Deymo
7239910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#endif  // UPDATE_ENGINE_COMMON_HTTP_COMMON_H_
73