// Copyright 2014 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_services"]
module http_server;

import "http_server/interfaces/http_request.mojom";
import "http_server/interfaces/http_response.mojom";

interface HttpServer {
  // Sets a handler for URLs matching a regex pattern. Handlers are considered
  // in the order they were registered.
  //
  // Returns false if there was already a handler registered for the given
  // pattern.
  //
  // To unregister a handler, destroy the underlying pipe.
  SetHandler(string pattern, HttpHandler handler) => (bool success);

  // Returns the TCP port at which the server is running. This will not return
  // until the server is ready, ie. listening for connections.
  GetPort() => (uint16 port);
};

interface HttpHandler {
  HandleRequest(HttpRequest request) => (HttpResponse response);
};
