# RemotePackage

<a id="remotepackage"></a>

# RemotePackage

```cpp
#include <icy/pacm/package.h>

struct RemotePackage
```

[Defined in src/pacm/include/icy/pacm/package.h:151](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L151)

> **Inherits:** [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package)

[Package](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) metadata loaded from the remote package index.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`RemotePackage`](#remotepackage-1) | `function` | Declared here |
| [`RemotePackage`](#remotepackage-2) | `function` | Declared here |
| [`~RemotePackage`](#remotepackage-3) | `function` | Declared here |
| [`assets`](#assets) | `function` | Declared here |
| [`latestAsset`](#latestasset) | `function` | Declared here |
| [`assetVersion`](#assetversion) | `function` | Declared here |
| [`latestSDKAsset`](#latestsdkasset) | `function` | Declared here |
| [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package-1) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package-2) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`~Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package-3) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`id`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#id-7) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`name`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#name-10) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`type`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#type-14) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`author`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#author) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`description`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#description-1) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`hasExtension`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#hasextension) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`extension`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#extension) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`valid`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#valid-4) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`toJson`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#tojson) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |
| [`print`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#print-11) | `function` | Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package) |

## Inherited from [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package-1)  | Constructs an empty package. |
| `function` | [`Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package-2)  | Constructs a package from an existing JSON value. |
| `function` | [`~Package`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#package-3) `virtual` `noexcept` |  |
| `function` | [`id`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#id-7) `virtual` `const` | Returns the package unique identifier. |
| `function` | [`name`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#name-10) `virtual` `const` | Returns the package display name. |
| `function` | [`type`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#type-14) `virtual` `const` | Returns the package type (e.g. "plugin", "asset"). |
| `function` | [`author`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#author) `virtual` `const` | Returns the package author string. |
| `function` | [`description`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#description-1) `virtual` `const` | Returns the package description string. |
| `function` | [`hasExtension`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#hasextension) `virtual` `const` | Returns true when the package has an "extension" object. |
| `function` | [`extension`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#extension) `virtual` `const` | Returns a read-only view of the extension metadata. Throws if no extension object is present. |
| `function` | [`valid`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#valid-4) `virtual` `const` | Returns true if id, name and type are all non-empty. |
| `function` | [`toJson`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#tojson) `virtual` `const` | Returns a plain JSON copy of this package object. |
| `function` | [`print`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package.md#print-11) `virtual` `const` | Dumps the JSON representation of this package to `ost`. |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`RemotePackage`](#remotepackage-1)  | Constructs an empty remote package. |
|  | [`RemotePackage`](#remotepackage-2)  | Constructs a remote package from an existing JSON value. |
|  | [`~RemotePackage`](#remotepackage-3) `virtual` `noexcept` |  |
| [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | [`assets`](#assets) `virtual` | Returns a reference to the "assets" JSON array node. |
| [`Asset`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package-Asset.md#asset-1) | [`latestAsset`](#latestasset) `virtual` | Returns the latest asset for this package. For local packages this is the currently installed version. For remote packages this is the latest available version. Throws an exception if no asset exists. |
| [`Asset`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package-Asset.md#asset-1) | [`assetVersion`](#assetversion) `virtual` | Returns the latest asset for the given package version. Throws an exception if no asset exists. |
| [`Asset`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package-Asset.md#asset-1) | [`latestSDKAsset`](#latestsdkasset) `virtual` | Returns the latest asset for the given SDK version. This method is for safely installing plug-ins which must be compiled against a specific SDK version. The package JSON must have a "sdk-version" member for this function to work as intended. Throws an exception if no asset exists. |

---

<a id="remotepackage-1"></a>

### RemotePackage

```cpp
RemotePackage()
```

[Defined in src/pacm/include/icy/pacm/package.h:154](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L154)

Constructs an empty remote package.

---

<a id="remotepackage-2"></a>

### RemotePackage

```cpp
RemotePackage(const json::Value & src)
```

[Defined in src/pacm/include/icy/pacm/package.h:158](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L158)

Constructs a remote package from an existing JSON value.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `src` | const [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | JSON object containing remote package fields. |

---

<a id="remotepackage-3"></a>

### ~RemotePackage

`virtual` `noexcept`

```cpp
virtual ~RemotePackage() noexcept
```

[Defined in src/pacm/include/icy/pacm/package.h:159](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L159)

---

<a id="assets"></a>

### assets

`virtual`

```cpp
virtual json::Value & assets()
```

[Defined in src/pacm/include/icy/pacm/package.h:162](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L162)

Returns a reference to the "assets" JSON array node.

---

<a id="latestasset"></a>

### latestAsset

`virtual`

```cpp
virtual Asset latestAsset()
```

[Defined in src/pacm/include/icy/pacm/package.h:168](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L168)

Returns the latest asset for this package. For local packages this is the currently installed version. For remote packages this is the latest available version. Throws an exception if no asset exists.

---

<a id="assetversion"></a>

### assetVersion

`virtual`

```cpp
virtual Asset assetVersion(const std::string & version)
```

[Defined in src/pacm/include/icy/pacm/package.h:172](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L172)

Returns the latest asset for the given package version. Throws an exception if no asset exists.

---

<a id="latestsdkasset"></a>

### latestSDKAsset

`virtual`

```cpp
virtual Asset latestSDKAsset(const std::string & version)
```

[Defined in src/pacm/include/icy/pacm/package.h:180](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/package.h#L180)

Returns the latest asset for the given SDK version. This method is for safely installing plug-ins which must be compiled against a specific SDK version. The package JSON must have a "sdk-version" member for this function to work as intended. Throws an exception if no asset exists.
