// Copyright 2020 The Chromium OS 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 SYSTEM_PROXY_HTTP_UTIL_H_
#define SYSTEM_PROXY_HTTP_UTIL_H_

#include <string>
#include <utility>
#include <vector>

#include <base/strings/string_util.h>

// TODO(acostinas,crbug.com/1094205): Add fuzzer tests.
namespace system_proxy {

// List of scheme and realm pairs. The |first| item in each entry represents the
// HTTP authentication scheme and |second| item represents the realm of the
// server where the challenge is originating from.
using SchemeRealmPairList = std::vector<std::pair<std::string, std::string>>;

// Verifies if the http headers are ending with an http empty line, meaning a
// line that contains only CRLF or LF preceded by a line ending with CRLF.
bool IsEndingWithHttpEmptyLine(const base::StringPiece& http_header_line);

// Analyses |input| and attempts to find a complete HTTP request (request line,
// headers and end of message). Returns false if it is not found or only a
// partial HTTP request is in |input|. Returns true if an HTTP request is found,
// and puts the HTTP request into *|out_http_request|, including the end tag
// (two newlines). Any remaining data is put into *|out_remaining_data|.
bool ExtractHTTPRequest(const std::vector<char>& input,
                        std::vector<char>* out_http_request,
                        std::vector<char>* out_remaining_data);

// Parses the first line of the http CONNECT request and extracts the URI
// authority, defined in RFC3986, section 3.2, as the host name and port number
// separated by a colon. The destination URI is specified in the request line
// (RFC2817, section 5.2):
//      CONNECT server.example.com:80 HTTP/1.1
// If the first line in |raw_request| (the Request-Line) is a correctly formed
// CONNECT request, it will return the destination URI as host:port, otherwise
// it will return an empty string.
std::string GetUriAuthorityFromHttpHeader(
    const base::StringPiece& http_request);

// Parses the HTTP server reply and extracts the supported authentication scheme
// and realm.
SchemeRealmPairList ParseAuthChallenge(const base::StringPiece& http_request);

}  // namespace system_proxy

#endif  // SYSTEM_PROXY_HTTP_UTIL_H_
