<?php
/**
 * String Transformer Class file.
 *
 * @package Activitypub
 */

namespace Activitypub\Transformer;

use function Activitypub\is_actor;
use function Activitypub\is_activity;

/**
 * String Transformer Class file.
 */
class Json extends Activity_Object {

	/**
	 * JSON constructor.
	 *
	 * @param string|array $item The item that should be transformed.
	 */
	public function __construct( $item ) {
		if ( \is_string( $item ) ) {
			$item = \json_decode( $item, true );
		}

		// Check if the item is an Activity or an Object.
		if ( is_activity( $item ) ) {
			$class = '\Activitypub\Activity\Activity';
		} elseif ( is_actor( $item ) ) {
			$class = '\Activitypub\Activity\Actor';
		} else {
			$class = '\Activitypub\Activity\Base_Object';
		}

		$object = $class::init_from_array( $item );

		parent::__construct( $object );
	}
}