| // 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. |
| |
| #ifndef SRC_LIB_PKG_URL_FUCHSIA_PKG_URL_H_ |
| #define SRC_LIB_PKG_URL_FUCHSIA_PKG_URL_H_ |
| |
| #include <string> |
| |
| #include "src/lib/fxl/macros.h" |
| |
| namespace component { |
| |
| class FuchsiaPkgUrl { |
| public: |
| FuchsiaPkgUrl() = default; |
| FuchsiaPkgUrl(const FuchsiaPkgUrl&) = default; |
| FuchsiaPkgUrl& operator=(const FuchsiaPkgUrl&) = default; |
| FuchsiaPkgUrl(FuchsiaPkgUrl&&) = default; |
| FuchsiaPkgUrl& operator=(FuchsiaPkgUrl&&) = default; |
| |
| static bool IsFuchsiaPkgScheme(const std::string& url); |
| |
| // Returns the default component's .cmx path of this package, i.e. |
| // meta/<package_name>.cmx |
| std::string GetDefaultComponentCmxPath() const; |
| |
| bool Parse(const std::string& url); |
| |
| bool operator==(const FuchsiaPkgUrl&) const; |
| bool operator!=(const FuchsiaPkgUrl& rhs) const { return !(*this == rhs); } |
| |
| const std::string& host_name() const { return host_name_; } |
| const std::string& package_name() const { return package_name_; } |
| const std::string& variant() const { return variant_; } |
| const std::string& hash() const { return hash_; } |
| const std::string& resource_path() const { return resource_path_; } |
| std::string package_path() const; |
| std::string pkgfs_dir_path() const; |
| |
| const std::string& ToString() const; |
| |
| private: |
| std::string url_; |
| std::string host_name_; |
| std::string package_name_; |
| std::string variant_; |
| std::string hash_; |
| std::string resource_path_; |
| }; |
| |
| } // namespace component |
| |
| #endif // SRC_LIB_PKG_URL_FUCHSIA_PKG_URL_H_ |