blob: 0a8f33e8d13416dd8cd1abee22be4a52bb65960c [file] [log] [blame]
// 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.
/// Specify the cache behavior of the request.
enum CacheMode {
/// Default behavior.
/// 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.
/// The HTTP request will fail if it cannot serve the requested resource
/// from the cache (or some equivalent local store).
/// 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.
/// The response body should be streamed through the `stream` field of the
/// response body.
/// The response body may be returned as a buffer or stream.
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;