| // Copyright 2015 The Fuchsia Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | library fuchsia.net.oldhttp; | 
 |  | 
 | /// Specify the cache behavior of the request. | 
 | enum CacheMode { | 
 |   /// Default behavior. | 
 |   DEFAULT = 0; | 
 |  | 
 |   /// The HTTP request will bypass the local cache and will have a | 
 |   /// 'Cache-Control: nocache' header added in that causes any proxy servers | 
 |   /// to also not satisfy the request from their cache.  This has the effect | 
 |   /// of forcing a full end-to-end fetch. | 
 |   BYPASS_CACHE = 1; | 
 |  | 
 |   /// The HTTP request will fail if it cannot serve the requested resource | 
 |   /// from the cache (or some equivalent local store). | 
 |   ONLY_FROM_CACHE = 2; | 
 | }; | 
 |  | 
 | /// Specify the mechanism used to return the response body. | 
 | enum ResponseBodyMode { | 
 |   /// The complete response body should be returned in the `buffer` field of | 
 |   /// the response body. | 
 |   BUFFER = 0; | 
 |   /// The response body should be streamed through the `stream` field of the | 
 |   /// response body. | 
 |   STREAM = 1; | 
 |   /// The response body may be returned as a buffer or stream. | 
 |   BUFFER_OR_STREAM = 2; | 
 | }; | 
 |  | 
 | resource struct URLRequest { | 
 |   /// The URL to load. | 
 |   string url; | 
 |  | 
 |   /// The HTTP method if applicable. | 
 |   string method = "GET"; | 
 |  | 
 |   /// Additional HTTP request headers. | 
 |   vector<HttpHeader>? headers; | 
 |  | 
 |   /// The payload for the request body. For HTTP requests, the method must be set | 
 |   /// to "POST" or "PUT". If a buffer is used for the body, a Content-Length | 
 |   /// header will automatically be added. | 
 |   URLBody? body; | 
 |  | 
 |   /// The buffer size of the socket returned in URLResponse's `body` member. | 
 |   /// A value of 0 indicates that the default buffer size should be used.  This | 
 |   /// value is just a suggestion. The URLLoader may choose to ignore this value. | 
 |   uint32 response_body_buffer_size = 0; | 
 |  | 
 |   /// If set to true, then redirects will be automatically followed. Otherwise, | 
 |   /// when a redirect is encounterd, FollowRedirect must be called to proceed. | 
 |   bool auto_follow_redirects = false; | 
 |  | 
 |   /// The cache behavior for the request. | 
 |   CacheMode cache_mode = CacheMode.DEFAULT; | 
 |  | 
 |   /// The response body mode. | 
 |   ResponseBodyMode response_body_mode = ResponseBodyMode.STREAM; | 
 | }; |