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

visibility = [
  "//peridot/bin/*",
  "//peridot/lib/*",
]

source_set("firebase") {
  sources = [
    "encoding.cc",
    "encoding.h",
    "event_stream.cc",
    "event_stream.h",
    "firebase.h",
    "firebase_impl.cc",
    "firebase_impl.h",
    "status.cc",
    "status.h",
    "watch_client.h",
  ]

  public_deps = [
    "//garnet/lib/network_wrapper",
    "//peridot/lib/convert",
    "//third_party/rapidjson",
  ]

  deps = [
    "//garnet/lib/callback",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/lib/base64url",
    "//peridot/lib/socket",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "encoding_unittest.cc",
    "event_stream_unittest.cc",
    "firebase_impl_unittest.cc",
  ]

  deps = [
    ":firebase",
    "//garnet/lib/gtest",
    "//garnet/lib/network_wrapper:fake",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/lib/convert",
    "//peridot/lib/socket",
    "//third_party/googletest:gtest",
  ]
}
