1 // Copyright 2012 The Chromium Authors 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/third_party/quiche/src/quiche/spdy/core/http2_header_block.h" 11 #include "net/third_party/quiche/src/quiche/spdy/core/spdy_framer.h" 12 #include "net/third_party/quiche/src/quiche/spdy/core/spdy_protocol.h" 13 #include "url/gurl.h" 14 15 namespace net { 16 17 class HttpResponseInfo; 18 struct HttpRequestInfo; 19 class HttpRequestHeaders; 20 21 // Convert a spdy::Http2HeaderBlock into an HttpResponseInfo with some checks. 22 // `headers` input parameter with the spdy::Http2HeaderBlock. 23 // `response` output parameter for the HttpResponseInfo. 24 // Returns OK if successfully converted. An error is returned if the 25 // spdy::Http2HeaderBlock is incomplete (e.g. missing 'status' or 'version') or 26 // checks fail. 27 NET_EXPORT int SpdyHeadersToHttpResponse(const spdy::Http2HeaderBlock& headers, 28 HttpResponseInfo* response); 29 30 // Create a spdy::Http2HeaderBlock from HttpRequestInfo and HttpRequestHeaders. 31 NET_EXPORT void CreateSpdyHeadersFromHttpRequest( 32 const HttpRequestInfo& info, 33 const HttpRequestHeaders& request_headers, 34 spdy::Http2HeaderBlock* headers); 35 36 // Create a spdy::Http2HeaderBlock from HttpRequestInfo and HttpRequestHeaders 37 // for a WebSockets over HTTP/2 request. 38 NET_EXPORT void CreateSpdyHeadersFromHttpRequestForWebSocket( 39 const GURL& url, 40 const HttpRequestHeaders& request_headers, 41 spdy::Http2HeaderBlock* headers); 42 43 // Create HttpRequestHeaders from spdy::Http2HeaderBlock. 44 NET_EXPORT void ConvertHeaderBlockToHttpRequestHeaders( 45 const spdy::Http2HeaderBlock& spdy_headers, 46 HttpRequestHeaders* http_headers); 47 48 NET_EXPORT spdy::SpdyPriority ConvertRequestPriorityToSpdyPriority( 49 RequestPriority priority); 50 51 NET_EXPORT RequestPriority 52 ConvertSpdyPriorityToRequestPriority(spdy::SpdyPriority priority); 53 54 } // namespace net 55 56 #endif // NET_SPDY_SPDY_HTTP_UTILS_H_ 57