# 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/components.gni")
import("//build/rust/rustc_binary.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",
  ]
}
