text: // Copyright (c) 2011-2017 The Cryptonote developers
  // Copyright (c) 2017-2018 The Circle Foundation & invert Devs
  // Copyright (c) 2018-2019 invert Network & invert Devs
  // Distributed under the MIT/X11 software license, see the accompanying
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  
  #pragma once
  
  #include <ostream>
  #include <string>
  #include <map>
  
  namespace CryptoNote {
  
    class HttpResponse {
    public:
      enum HTTP_STATUS {
        STATUS_200,
        STATUS_401,
        STATUS_404,
        STATUS_500
      };
  
      HttpResponse();
  
      void setStatus(HTTP_STATUS s);
      void addHeader(const std::string& name, const std::string& value);
      void setBody(const std::string& b);
  
      const std::map<std::string, std::string>& getHeaders() const { return headers; }
      HTTP_STATUS getStatus() const { return status; }
      const std::string& getBody() const { return body; }
  
    private:
      friend std::ostream& operator<<(std::ostream& os, const HttpResponse& resp);
      std::ostream& printHttpResponse(std::ostream& os) const;
  
      HTTP_STATUS status;
      std::map<std::string, std::string> headers;
      std::string body;
    };
  
    inline std::ostream& operator<<(std::ostream& os, const HttpResponse& resp) {
      return resp.printHttpResponse(os);
    }
  
  } //namespace CryptoNote
  