# 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/public/lib/network_wrapper",
    "//peridot/lib/convert",
    "//third_party/rapidjson",
  ]

  deps = [
    "//garnet/public/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/public/lib/fxl",
    "//garnet/public/lib/gtest",
    "//garnet/public/lib/network_wrapper:fake",
    "//peridot/lib/convert",
    "//peridot/lib/socket",
    "//third_party/googletest:gtest",
  ]
}
