Harvest API
Important: This package is under development and thus neither fully implemented or tested. Not production ready!
Harvest 2 API using OAuth access tokens
Please see https://github.com/arueckauer/harvest-api for background information.
Getting Started
Install via composer
composer require arueckauer/harvest-api
Usage
Initialization
Zend Expressive
Place configuration of your Harvest account inconfig/autoload/application.local.php
(replace example data with credentials of your account):
<?php
declare(strict_types = 1);
return [
arueckauer\HarvestApi\ClientFactory::class => [
'config' => [
'headers' => [
'Authorization' => 'Bearer $ACCESS_TOKEN',
'Harvest-Account-Id' => '$ACCOUNT_ID',
'User-Agent' => 'MyApp (yourname@example.com)',
],
],
],
];
Create a handler via CLI (replace example class name with your handler name):
composer expressive handler:create "App\Handler\HarvestApi"
This will create a Handler class and factory for it as well as register these in config/autoload/zend-expressive-tooling-factories.global.php
for you.
Add a constructor injection to the created Handler class. Then in the newly created factory get the Harvest client object from the container and pass it to the Handler class constructor - src/App/src/Handler/HarvestApiFactory.php
:
<?php
declare(strict_types=1);
namespace App\Handler;
use Psr\Container\ContainerInterface;
class HarvestApiFactory
{
public function __invoke(ContainerInterface $container) : HarvestApi
{
return new HarvestApi($container->get(\arueckauer\HarvestApi\Client::class));
}
}
Other context
<?php
// public/index.php
require_once __DIR__ . '/../vendor/autoload.php';
$headers = [
'Authorization' => 'Bearer $ACCESS_TOKEN',
'Harvest-Account-Id' => '$ACCOUNT_ID',
'User-Agent' => 'MyApp (yourname@example.com)',
];
$client = new \arueckauer\HarvestApi\Client($headers);
Test
Work in progress
License
MIT License. See LICENSE
Contributing
Please read and adhere to our CODE_OF_CONDUCT.
Submitting Bugs
This package is still under development and thus incomplete features and bugs are to be expected. If you experience any difficulties, feel free to open an issue here on GitHub.
Pull requests
Contributions via pull requests are welcome.
Acknowledgements
This package is heavily inspired by bestit/harvest-api, which at the time of development supported Harvest API V1.
Todo
To check the current status of the implementation, check out CHECKLIST and open issues.