| // Copyright (c) 2011 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. |
| |
| #ifndef CHROME_TEST_WEBDRIVER_HTTP_RESPONSE_H_ |
| #define CHROME_TEST_WEBDRIVER_HTTP_RESPONSE_H_ |
| |
| #include <map> |
| #include <string> |
| |
| #include "base/basictypes.h" |
| |
| namespace webdriver { |
| |
| class HttpResponse { |
| public: |
| typedef std::map<std::string, std::string> HeaderMap; |
| |
| // The supported HTTP response codes. |
| static const int kOk; |
| static const int kNoContent; |
| static const int kSeeOther; |
| static const int kNotModified; |
| static const int kBadRequest; |
| static const int kForbidden; |
| static const int kNotFound; |
| static const int kMethodNotAllowed; |
| static const int kInternalServerError; |
| static const int kNotImplemented; |
| |
| // Creates an HTTP response with a 200 OK status. |
| HttpResponse(); |
| explicit HttpResponse(int status); |
| ~HttpResponse(); |
| |
| // Sets a header in this response. If a header with the same |name| already |
| // exists, the |value| will be appended to the existing values. Since header |
| // names are case insensitive, the header will be stored in lowercase format. |
| void AddHeader(const std::string& name, const std::string& value); |
| |
| // Retrieves the value of the specified header. If there is no such header, |
| // the output |value| will not be modified and false will be returned. |
| bool GetHeader(const std::string& name, std::string* value) const; |
| |
| // Removes the header with the given |name|. Returns whether there was a |
| // matching header to remove. |
| bool RemoveHeader(const std::string& name); |
| |
| // Removes all headers. |
| void ClearHeaders(); |
| |
| // Convenience function for setting the Content-Type header for this response. |
| void SetMimeType(const std::string& mime_type); |
| |
| // Returns the status phrase recommended by RFC 2616 section 6.1.1 for this |
| // response's status code. If the status code is not recognized, the default |
| // "Unknown" status phrase will be used. |
| std::string GetReasonPhrase() const; |
| |
| // Appends this response to |data|, abiding by HTTP 1.1. |
| // This will add an appropriate "Content-Length" header if not already set. |
| void GetData(std::string* data) const; |
| |
| int status() const; |
| void set_status(int status); |
| const std::string& body() const; |
| void set_body(const std::string& body); |
| |
| private: |
| void UpdateHeader(const std::string& name, const std::string& new_value); |
| |
| int status_; |
| HeaderMap headers_; |
| std::string body_; |
| }; |
| |
| } // webdriver |
| |
| #endif // CHROME_TEST_WEBDRIVER_HTTP_RESPONSE_H_ |