blackmine / blackmine
Redmine API Client with a lot of magic in its code
Requires
- php: ^8.0
- ext-ctype: *
- ext-curl: *
- ext-json: *
- doctrine/collections: ^1.6
- nesbot/carbon: ^2.53
- psr/cache: ^1.0|^2.0|^3.0
- rmccue/requests: ^1.8
- symfony/contracts: ^2.4
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.0.0
- dealerdirect/phpcodesniffer-composer-installer: ^0.7
- phpunit/phpunit: ^9
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4
Suggests
- symfony/cache: ^5.3
This package is auto-updated.
Last update: 2024-04-26 17:24:17 UTC
README
Blackmine
Blackmine is a full-featured Redmine API client written in PHP8. It implements a simple interface and converts responses into models and collections.
Installation
composer require blackmine/blackmine
Quick example
$options = new \Blackmine\Client\ClientOptions([ ClientOptions::CLIENT_OPTION_BASE_URL => "https://your.redmine.url", ClientOptions::CLIENT_OPTION_API_KEY => "your.api.key" ]); $client = new \Blackmine\Client\Client($options); $issues = $client->getRepository("issues"); $data = $issues ->addFilter(Issues::ISSUE_FILTER_ISSUE_ID, [41432, 41436]) ->with([Issues::ISSUE_RELATION_WATCHERS]) ->search(); $issue = new \Blackmine\Model\Issue\Issue(); $issue->setSubject("Test Issue"); $issue->setDescription("An issue description, yeah, a real one..."); $issue->setStartDate(\Carbon\CarbonImmutable::create(2021, 10, 31)); $issue->setDueDate(\Carbon\CarbonImmutable::create(2022, 10, 31)); $issues->create($issue);
Status
Actually only JSON format is supported, yeah, JSON is cool and XML isn't. If you think XML is cool enough you can fork the project, start the feature/xml_is_cool branch and pull request your coolness.
Almost all exposed Redmine APIs are supported by Blackmine. There a few bugs that we are trying to fis as soon as possible.
Blackmine uses Requests as transport layer, in a near or not so near future, I will try to pivot to a PSR18 implementation. If you can't wait, you can fork the project, start the feature/psr18_or_death and pull request your hurry ups.
Blackmine uses Carbon to manage dates.
Things that are almost complete:
- Issues API
- Projects API
- Users API
- Time Entries API
- Issue Categories API
- Issue Statuses API
- Issue Relations API
- Trackers API
- Groups API
- Versions API
- Roles API
- Custom Fields API
- Memberships API
- Files API
- Enumerations API
- Attachments API
- Wiki Pages API (bugged)
- News API
- Caching responses (with Tag/TTL invalidation mechanism)
- Impersonating users (for admin users)
Things that are incomplete:
- Documentation
- Search fluent API (80%)
- Error handling and exceptions (0%)
- Model functionality (50%)
- Unit tests (0%)
- Magic methods signatures on models and repositories (50%)
- Date conversion from and to CarbonImmutable objects