# Copyright 2019 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.

import("//build/rust/rustc_binary.gni")
import("//src/sys/build/components.gni")

group("tests") {
  testonly = true

  deps = [ "integration:tests" ]
}

rustc_binary("http_client") {
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.net.http:fuchsia.net.http-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-hyper",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:http",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [ "src/main.rs" ]

  configs -= [ "//build/config/rust:allow_unused_results" ]
}

# TODO(fxbug.dev/72870): Remove v1 component once integration tests are no
# longer using it.
fuchsia_component("component_v1") {
  component_name = "http-client"
  manifest = "meta/http_client.cmx"
  deps = [ ":http_client" ]
}

fuchsia_component("component_v2") {
  component_name = "http-client"
  manifest = "meta/http_client.cml"
  deps = [ ":http_client" ]
}

fuchsia_package("http-client") {
  deps = [
    ":component_v1",
    ":component_v2",
  ]
}
