spdy_http_utils.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef NET_SPDY_SPDY_HTTP_UTILS_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NET_SPDY_SPDY_HTTP_UTILS_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "googleurl/src/gurl.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/net_export.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/request_priority.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/spdy/spdy_framer.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/spdy/spdy_header_block.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HttpResponseInfo; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct HttpRequestInfo; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HttpRequestHeaders; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Convert a SpdyHeaderBlock into an HttpResponseInfo. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |headers| input parameter with the SpdyHeaderBlock. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |response| output parameter for the HttpResponseInfo. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns true if successfully converted. False if the SpdyHeaderBlock is 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// incomplete (e.g. missing 'status' or 'version'). 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SpdyHeadersToHttpResponse(const SpdyHeaderBlock& headers, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int protocol_version, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HttpResponseInfo* response); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Create a SpdyHeaderBlock for a Spdy SYN_STREAM Frame from 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// HttpRequestInfo and HttpRequestHeaders. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CreateSpdyHeadersFromHttpRequest(const HttpRequestInfo& info, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const HttpRequestHeaders& request_headers, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SpdyHeaderBlock* headers, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int protocol_version, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool direct); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns the URL associated with the |headers| by assembling the 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// scheme, host and path from the protocol specific keys. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GURL GetUrlFromHeaderBlock(const SpdyHeaderBlock& headers, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int protocol_version, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool pushed); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NET_EXPORT_PRIVATE SpdyPriority ConvertRequestPriorityToSpdyPriority( 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RequestPriority priority, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int protocol_version); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace net 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // NET_SPDY_SPDY_HTTP_UTILS_H_ 50