62 lines
1.4 KiB
PHP
62 lines
1.4 KiB
PHP
<?php
|
|
/**
|
|
* Simple codec for encoding and decoding sync objects.
|
|
*
|
|
* @package automattic/jetpack-sync
|
|
*/
|
|
|
|
namespace Automattic\Jetpack\Sync;
|
|
|
|
/**
|
|
* An implementation of Automattic\Jetpack\Sync\Codec_Interface that uses base64
|
|
* algorithm to compress objects serialized using json_encode.
|
|
*/
|
|
class Simple_Codec extends JSON_Deflate_Array_Codec {
|
|
/**
|
|
* Name of the codec.
|
|
*
|
|
* @access public
|
|
*
|
|
* @var string
|
|
*/
|
|
const CODEC_NAME = 'simple';
|
|
|
|
/**
|
|
* Retrieve the name of the codec.
|
|
*
|
|
* @access public
|
|
*
|
|
* @return string Name of the codec.
|
|
*/
|
|
public function name() {
|
|
return self::CODEC_NAME;
|
|
}
|
|
|
|
/**
|
|
* Encode a sync object.
|
|
*
|
|
* @access public
|
|
*
|
|
* @param mixed $object Sync object to encode.
|
|
* @return string Encoded sync object.
|
|
*/
|
|
public function encode( $object ) {
|
|
// This is intentionally using base64_encode().
|
|
// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
|
|
return base64_encode( $this->json_serialize( $object ) );
|
|
}
|
|
|
|
/**
|
|
* Encode a sync object.
|
|
*
|
|
* @access public
|
|
*
|
|
* @param string $input Encoded sync object to decode.
|
|
* @return mixed Decoded sync object.
|
|
*/
|
|
public function decode( $input ) {
|
|
// This is intentionally using base64_decode().
|
|
// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
|
|
return $this->json_unserialize( base64_decode( $input ) );
|
|
}
|
|
}
|