Skip to content
This repository has been archived by the owner on May 4, 2024. It is now read-only.

lookyman/chronicle-api

Repository files navigation

Lookyman/Chronicle

Client library for interacting with Chronicle.

Build Status Coverage Status Downloads Latest stable PHPStan level License

Installation

composer require lookyman/chronicle-api

Usage

use Lookyman\Chronicle\Api;
use ParagonIE\ConstantTime\Base64UrlSafe;
use ParagonIE\Sapient\CryptographyKeys\SigningPublicKey;
use ParagonIE\Sapient\CryptographyKeys\SigningSecretKey;

$api = new Api(
	new Client(), // Client must implement Http\Client\HttpAsyncClient
	new RequestFactory(), // RequestFactory must implement Interop\Http\Factory\RequestFactoryInterface
	'https://chronicle.uri',
	new SigningPublicKey(Base64UrlSafe::decode('chronicle public key')) // optional, omit if you don't care about validating API responses
);
var_dump($api->lastHash()->wait());

// you must authenticate first before you can publish a message
$api->authenticate(
	new SigningSecretKey(Base64UrlSafe::decode('your secret key')),
	'your client id'
);
var_dump($api->publish('hello world')->wait());

For implementations of client and request factory, you can use for example Guzzle 6 HTTP Adapter and HTTP Factory for Guzzle respectively.

All endpoints return Http\Promise\Promise, so you can either just ->wait() for the response, or handle it asynchronously with ->then(). Responses are just plain arrays, look up the structure in the Chronicle's documentation.