bookmarks/lib/Image.php

59 lines
1.1 KiB
PHP

<?php
/*
* Copyright (c) 2020-2024. The Nextcloud Bookmarks contributors.
*
* This file is licensed under the Affero General Public License version 3 or later. See the COPYING file.
*/
namespace OCA\Bookmarks;
use OCA\Bookmarks\Contract\IImage;
class Image implements IImage {
/**
* @var string
*/
private $type;
private $data;
/**
* Image constructor.
*
* @param string $type
* @param $data
*/
public function __construct(string $type, $data) {
$this->type = $type;
$this->data = $data;
}
public static function deserialize(string $json): Image {
$image = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
return new Image($image['contentType'], $image['data'] ? base64_decode($image['data']) : null);
}
/**
* @return string
*/
public function getContentType(): string {
return $this->type;
}
/**
* @return mixed
*/
public function getData() {
return $this->data;
}
/**
* @return false|string
*/
public function serialize() {
return json_encode([
'contentType' => $this->getContentType(),
'data' => base64_encode($this->getData()),
], JSON_THROW_ON_ERROR);
}
}