# Copyright 2018 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/package.gni")

executable("bin") {
  output_name = "spotify_auth_provider"

  sources = [
    "main.cc",
  ]

  public_deps = [
    "//zircon/public/lib/fit",
  ]

  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.auth",
    "//garnet/public/lib/component/cpp",
    "//sdk/lib/fidl/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/network_wrapper",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
  ]
}

source_set("lib") {
  sources = [
    "constants.h",
    "factory_impl.cc",
    "factory_impl.h",
    "spotify_auth_provider_impl.cc",
    "spotify_auth_provider_impl.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.net.oldhttp",
    "//garnet/public/lib/svc/cpp",
    "//peridot/lib/rapidjson",
    "//third_party/rapidjson",
    "//topaz/auth_providers/oauth",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.auth",
    "//sdk/fidl/fuchsia.ui.app",
    "//garnet/public/lib/callback",
    "//garnet/public/lib/component/cpp",
    "//sdk/lib/fidl/cpp",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/network_wrapper",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "factory_impl_unittest.cc",
    "spotify_auth_provider_impl_unittest.cc",
  ]

  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.auth",
    "//sdk/lib/fidl/cpp",
    "//garnet/public/lib/fxl:fxl_printers",
    "//garnet/public/lib/gtest:gtest",
    "//garnet/public/lib/network_wrapper:fake",
    "//peridot/lib/rapidjson",
    "//third_party/googletest:gtest_main",
  ]
}

package("spotify_auth_provider") {
  deprecated_system_image = true

  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "spotify_auth_provider"
    },
  ]
}
