You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
<?php
|
|
|
|
namespace Darksparrow\DeegraphInteractions\DataStructures;
|
|
|
|
use DateTime;
|
|
|
|
class DeegraphNodeDetails
|
|
{
|
|
public string $ID;
|
|
public DateTime $CreatedAt;
|
|
public string $CreatorID;
|
|
|
|
public array $OtherProperties;
|
|
|
|
public function __construct(array $nodeDetails)
|
|
{
|
|
// $this->ID = $nodeDetails["@id"];
|
|
// $this->CreatedAt = new DateTime($nodeDetails["@created"]);
|
|
// $this->CreatorID = $nodeDetails["@creator"];
|
|
|
|
foreach($nodeDetails as $key=>$value) {
|
|
switch($key)
|
|
{
|
|
case "@id":
|
|
$this->ID = $value;
|
|
break;
|
|
case "@created":
|
|
$this->CreatedAt = new DateTime($value);
|
|
break;
|
|
case "@creator":
|
|
$this->CreatorID = $value;
|
|
break;
|
|
default:
|
|
$this->OtherProperties[$key] = $value;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function asJSON(): string
|
|
{
|
|
$createdAt = null;
|
|
if (isset($this->CreatedAt))
|
|
$createdAt = $this->CreatedAt->format(format: 'Y-m-d\TH:i:s.v\Z');
|
|
|
|
$builder = [
|
|
"@id" => $this->ID ?? null,
|
|
"@created" => $createdAt,
|
|
"@creator" => $this->CreatorID ?? null,
|
|
];
|
|
foreach($this->OtherProperties as $key=>$value) {
|
|
$builder[$key] = $value;
|
|
}
|
|
return json_encode($builder);
|
|
}
|
|
}
|
|
|