# Package::Asset

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

# Asset

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

struct Asset
```

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

Archive asset metadata for a specific package build.

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | [`root`](#root-2)  |  |

---

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

### root

```cpp
json::Value & root
```

Type: [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) &

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

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Asset`](#asset-2)  |  |
|  | [`Asset`](#asset-3)  | Defaulted constructor. |
|  | [`~Asset`](#asset-4) `virtual` `noexcept` |  |
| `std::string` | [`fileName`](#filename-3) `virtual` `const` | Returns the archive file name (e.g. "my-plugin-1.0.0.zip"). |
| `std::string` | [`version`](#version-5) `virtual` `const` | Returns the package version string (e.g. "1.0.0"). |
| `std::string` | [`sdkVersion`](#sdkversion-1) `virtual` `const` | Returns the SDK version this asset was built against (e.g. "2.0.0"). |
| `std::string` | [`checksum`](#checksum) `virtual` `const` | Returns the asset checksum string, or empty if none is set. |
| `std::string` | [`url`](#url-9) `virtual` `const` | Returns the download URL from the mirror list at `index`. |
| `int` | [`fileSize`](#filesize-1) `virtual` `const` | Returns the uncompressed file size in bytes, or 0 if not set. |
| `bool` | [`valid`](#valid-5) `virtual` `const` | Returns true if the asset has a file name, version, checksum, and at least one HTTPS mirror URL. |
| `void` | [`print`](#print-12) `virtual` `const` | Writes the raw JSON of this asset to `ost`. |
| [`Asset`](#asset-1) & | [`operator=`](#operator-217) `virtual` | Copies the backing JSON node from `r`. |
| `bool` | [`operator==`](#operator-218) `virtual` `const` | Returns true if file name, version and checksum all match `r`. |

---

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

### Asset

```cpp
Asset(json::Value & src)
```

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `src` | [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | JSON object node that backs this asset. |

---

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

### Asset

```cpp
Asset(const Asset &) = default
```

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

Defaulted constructor.

---

<a id="asset-4"></a>

### ~Asset

`virtual` `noexcept`

```cpp
virtual ~Asset() noexcept
```

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

---

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

### fileName

`virtual` `const`

```cpp
virtual std::string fileName() const
```

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

Returns the archive file name (e.g. "my-plugin-1.0.0.zip").

---

<a id="version-5"></a>

### version

`virtual` `const`

```cpp
virtual std::string version() const
```

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

Returns the package version string (e.g. "1.0.0").

---

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

### sdkVersion

`virtual` `const`

```cpp
virtual std::string sdkVersion() const
```

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

Returns the SDK version this asset was built against (e.g. "2.0.0").

---

<a id="checksum"></a>

### checksum

`virtual` `const`

```cpp
virtual std::string checksum() const
```

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

Returns the asset checksum string, or empty if none is set.

---

<a id="url-9"></a>

### url

`virtual` `const`

```cpp
virtual std::string url(int index = 0) const
```

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

Returns the download URL from the mirror list at `index`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `index` | `int` | Zero-based index into the mirrors array. |

---

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

### fileSize

`virtual` `const`

```cpp
virtual int fileSize() const
```

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

Returns the uncompressed file size in bytes, or 0 if not set.

---

<a id="valid-5"></a>

### valid

`virtual` `const`

```cpp
virtual bool valid() const
```

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

Returns true if the asset has a file name, version, checksum, and at least one HTTPS mirror URL.

---

<a id="print-12"></a>

### print

`virtual` `const`

```cpp
virtual void print(std::ostream & ost) const
```

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

Writes the raw JSON of this asset to `ost`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `ost` | `std::ostream &` | Output stream. |

---

<a id="operator-217"></a>

### operator=

`virtual`

```cpp
virtual Asset & operator=(const Asset & r)
```

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

Copies the backing JSON node from `r`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `r` | const [`Asset`](#asset-1) & | Source asset to copy from. |

---

<a id="operator-218"></a>

### operator==

`virtual` `const`

```cpp
virtual bool operator==(const Asset & r) const
```

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

Returns true if file name, version and checksum all match `r`.
