// Copyright 2015 The Chromium 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;
};

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 = DEFAULT;

  // The response body mode.
  ResponseBodyMode response_body_mode = STREAM;
};
