1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef NET_SPDY_SPDY_HTTP_UTILS_H_ 6#define NET_SPDY_SPDY_HTTP_UTILS_H_ 7 8#include "net/base/net_export.h" 9#include "net/base/request_priority.h" 10#include "net/spdy/spdy_framer.h" 11#include "net/spdy/spdy_header_block.h" 12#include "net/spdy/spdy_protocol.h" 13#include "url/gurl.h" 14 15namespace net { 16 17class HttpResponseInfo; 18struct HttpRequestInfo; 19class HttpRequestHeaders; 20class HttpResponseHeaders; 21 22// Convert a SpdyHeaderBlock into an HttpResponseInfo. 23// |headers| input parameter with the SpdyHeaderBlock. 24// |response| output parameter for the HttpResponseInfo. 25// Returns true if successfully converted. False if the SpdyHeaderBlock is 26// incomplete (e.g. missing 'status' or 'version'). 27bool SpdyHeadersToHttpResponse(const SpdyHeaderBlock& headers, 28 SpdyMajorVersion protocol_version, 29 HttpResponseInfo* response); 30 31// Create a SpdyHeaderBlock from HttpRequestInfo and HttpRequestHeaders. 32NET_EXPORT_PRIVATE void CreateSpdyHeadersFromHttpRequest( 33 const HttpRequestInfo& info, 34 const HttpRequestHeaders& request_headers, 35 SpdyMajorVersion protocol_version, 36 bool direct, 37 SpdyHeaderBlock* headers); 38 39// Create a SpdyHeaderBlock from HttpResponseHeaders. 40NET_EXPORT_PRIVATE void CreateSpdyHeadersFromHttpResponse( 41 const HttpResponseHeaders& response_headers, 42 SpdyMajorVersion protocol_version, 43 SpdyHeaderBlock* headers); 44 45// Returns the URL associated with the |headers| by assembling the 46// scheme, host and path from the protocol specific keys. 47NET_EXPORT_PRIVATE GURL GetUrlFromHeaderBlock(const SpdyHeaderBlock& headers, 48 SpdyMajorVersion protocol_version, 49 bool pushed); 50 51NET_EXPORT_PRIVATE SpdyPriority ConvertRequestPriorityToSpdyPriority( 52 RequestPriority priority, 53 SpdyMajorVersion protocol_version); 54 55NET_EXPORT_PRIVATE RequestPriority ConvertSpdyPriorityToRequestPriority( 56 SpdyPriority priority, 57 SpdyMajorVersion protocol_version); 58 59} // namespace net 60 61#endif // NET_SPDY_SPDY_HTTP_UTILS_H_ 62