esi / librariesio
LibrariesIO - A simple API wrapper/client for the Libraries.io API.
Fund package maintenance!
Ko Fi
ericsizemore
Tidelift
Requires
- php: ^8.2 <8.5
- guzzlehttp/guzzle: ^7.0 <8.0
- kevinrob/guzzle-cache-middleware: ^5.1 <6.0
- symfony/cache: ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: dev-master
- phpstan/phpstan: ^1.11 <2.0
- phpstan/phpstan-phpunit: ^1.4
- phpstan/phpstan-strict-rules: ^1.6
- phpunit/phpunit: ^11
This package is auto-updated.
Last update: 2024-11-13 14:55:03 UTC
README
2.0.0 Important Note
- The
master
branch is for development of the upcoming version 2.0.0. - Should be okay, but would still advise caution using in production.
- Function parameters, class api's, etc. may change during development.
- The docs have not yet been updated with changes.
Important Note
This project was born from the desire to expand my knowledge of API's and GuzzleHttp. My implementation is far from perfect, so I am open to any and all feedback that one may wish to provide.
- The Libraries.io API has the ability for pagination, however it is not yet fully implemented in this library.
Installation
Composer
Install the latest version with:
$ composer require esi/librariesio
Then, within your project (if not already included), include composer's autoload. For example:
<?php require 'vendor/autoload.php'; ?>
For more information see the installation docs.
Basic Usage
LibrariesIO splits the different endpoints based on their "component":
- Esi\LibrariesIO\LibrariesIO::platform()
- does not require an $endpoint, though you can pass 'platforms'.
- Esi\LibrariesIO\LibrariesIO::project()
- takes an 'endpoint' parameter to specify which subset you are looking for.
- Current endpoints are:
- contributors
- dependencies
- dependents
- dependent_repositories
- project
- search
- sourceRank
- Current endpoints are:
- takes an 'endpoint' parameter to specify which subset you are looking for.
- Esi\LibrariesIO\LibrariesIO::repository()
- takes an 'endpoint' parameter to specify which subset you are looking for.
- Current endpoints are:
- dependencies
- projects
- repository
- Current endpoints are:
- takes an 'endpoint' parameter to specify which subset you are looking for.
- Esi\LibrariesIO\LibrariesIO::user()
- takes an 'endpoint' parameter to specify which subset you are looking for.
- Current endpoints are:
- dependencies
- packages
- package_contributions
- repositories
- repository_contributions
- subscriptions
- user
- Current endpoints are:
- takes an 'endpoint' parameter to specify which subset you are looking for.
- Esi\LibrariesIO\LibrariesIO::subscription()
- takes an 'endpoint' parameter to specify which subset you are looking for.
- Current endpoints are:
- subscribe
- check
- update
- unsubscribe
- Current endpoints are:
- takes an 'endpoint' parameter to specify which subset you are looking for.
Each 'subset' has their own required options. Check the documentation (currently WIP) for more information.
As an example, let's say you want to get a list of the available platforms. To do so:
<?php use Esi\LibrariesIO\LibrariesIO; use Esi\LibrariesIO\Utils; $api = new LibrariesIO('..yourapikey..', \sys_get_temp_dir()); $response = $api->platform(); print_r(Utils::toArray($response)); /* Array ( [0] => Array ( [name] => NPM [project_count] => 4079049 [homepage] => https://www.npmjs.com [color] => #f1e05a [default_language] => JavaScript ) [1] => Array ( [name] => Maven [project_count] => 588275 [homepage] => http://maven.org [color] => #b07219 [default_language] => Java ) [...] ) */ ?>
For more information see the basic usage docs.
Testing
Unit testing is handled by PHPUnit. Given the nature of this library, with it's purpose being to interact with a live API, testing is somewhat limited.
No actual calls are made to the libraries.io API while performing tests. Instead, mock data and mocked class instances are used to test the library is working properly.
Documentation
The docs/
folder or online here.
About
Requirements
- LibrariesIO works with PHP 8.2.0 or above.
- All API requests include an api_key parameter. You will need to get your api key from your account page at libraries.io.
Submitting bugs and feature requests
Bugs and feature requests are tracked on GitHub
Issues are the quickest way to report a bug. If you find a bug or documentation error, please check the following first:
- That there is not an Issue already open concerning the bug
- That the issue has not already been addressed (within closed Issues, for example)
Contributing
LibrariesIO accepts contributions of code and documentation from the community. These contributions can be made in the form of Issues or Pull Requests on the LibrariesIO repository.
LibrariesIO is licensed under the MIT license. When submitting new features or patches to LibrariesIO, you are giving permission to license those features or patches under the MIT license.
LibrariesIO tries to adhere to PHPStan level 9 with strict rules and bleeding edge. Please ensure any contributions do as well.
Guidelines
Before we look into how, here are the guidelines. If your Pull Requests fail to pass these guidelines it will be declined, and you will need to re-submit when you’ve made the changes. This might sound a bit tough, but it is required for me to maintain quality of the code-base.
PHP Style
Please ensure all new contributions match the PSR-12 coding style guide. The project is not fully PSR-12 compatible, yet; however, to ensure the easiest transition to the coding guidelines, I would like to go ahead and request that any contributions follow them.
Documentation
If you change anything that requires a change to documentation then you will need to add it. New methods, parameters, changing default values, adding constants, etc. are all things that will require a change to documentation. The change-log must also be updated for every change. Also, PHPDoc blocks must be maintained.
Documenting functions/variables (PHPDoc)
Please ensure all new contributions adhere to:
When documenting new functions, or changing existing documentation.
Branching
One thing at a time: A pull request should only contain one change. That does not mean only one commit, but one change - however many commits it took. The reason for this is that if you change X and Y but send a pull request for both at the same time, we might really want X but disagree with Y, meaning we cannot merge the request. Using the Git-Flow branching model you can create new branches for both of these features and send two requests.
Author
Eric Sizemore - admin@secondversion.com - https://www.secondversion.com
License
LibrariesIO is licensed under the MIT License - see the LICENSE.md
file for details