// 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.

[DartPackage="mojo"]
module mojo;

import "mojo/public/interfaces/network/http_header.mojom";

struct URLRequest {
  // Specify the cache behavior of the request.
  enum CacheMode {
    // Default behavior.
    DEFAULT,

    // 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,

    // The HTTP request will fail if it cannot serve the requested resource
    // from the cache (or some equivalent local store).
    ONLY_FROM_CACHE,
  };

  // The URL to load.
  string url;

  // The HTTP method if applicable.
  string method = "GET";

  // Additional HTTP request headers.
  array<HttpHeader>? headers;

  // The payload for the request body, represented as a concatenation of data
  // streams. For HTTP requests, the method must be set to "POST" or "PUT".
  array<handle<data_pipe_consumer>>? body;

  // The buffer size of the data pipe 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;
};
