PHP Classes

PHP Libraries.IO: Query library packages using the Libraries.io API

Recommend this page to a friend!
     
  Info   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-03-14 (7 months ago) RSS 2.0 feedNot enough user ratingsTotal: 34 All time: 11,026 This week: 59Up
Version License PHP version Categories
librariesio 1.1.1MIT/X Consortium ...8.2.0Tools, Libraries, Web services, PHP 8
Description 

Author

This package can query library packages using the Libraries.io API.

It can send HTTP requests to the Libraries.io to perform several types of operations to query different aspects of package libraries supported by Libraries.io service.

Currently it can query about:

- Project information, contributors, dependencies, dependent projects, repositories, searched projects and source rank

- Repository information, dependencies, and projects

- User information, packages, package contributions, repositories, repository contributions, subscriptions

- Endpoint endpoint, subscribe, check, update, unsubscribe

Innovation Award
PHP Programming Innovation award winner
January 2024
Winner
Many developers host projects on sites like GitHub that provide accessible Git repository hosting to let developers share their projects on the Internet using Git to keep track of changes in repository files.

While GitHub provides an excellent repository hosting service, it is always possible to provide additional services on top of GitHub.

Libraries.io is a project that can provide a different view of the organization of projects hosted in GitHub and add more services like monitoring project dependencies and contributors.

This package provides a PHP API to query different aspects of projects listed in Libraries.IO.

Manuel Lemos
Picture of Eric Sizemore
  Performance   Level  
Name: Eric Sizemore is available for providing paid consulting. Contact Eric Sizemore .
Classes: 15 packages by
Country: United States United States
Age: 37
All time rank: 15119 in United States United States
Week rank: 215 Down24 in United States United States Down
Innovation award
Innovation award
Nominee: 4x

Winner: 2x

Details

LibrariesIO - A simple API wrapper/client for the Libraries.io API.

PHPMD PHPStan Psalm Security Scan Tests Scrutinizer Code Quality Code Coverage

Latest Stable Version Downloads per Month License

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

* Esi\LibrariesIO\LibrariesIO::repository()

* takes an 'endpoint' parameter to specify which subset you are looking for.
  * Current endpoints are:
    * dependencies
    * projects
    * repository

* 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

* Esi\LibrariesIO\LibrariesIO::subscription()

* takes an 'endpoint' parameter to specify which subset you are looking for.
  * Current endpoints are:
    * subscribe
    * check
    * update
    * unsubscribe

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;

$api = new LibrariesIO('..yourapikey..', \sys_get_temp_dir());
$response = $api->platform();

print_r($api->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:

* PSR-5 PHPDoc * PSR-19 PHPDoc Tags

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


  Files folder image Files (34)  
File Role Description
Files folder image.github (2 files, 1 directory)
Files folder imagedocs (12 files)
Files folder imagesrc (1 file, 1 directory)
Files folder imagetests (1 directory)
Accessible without login Plain text file .php-cs-fixer.dist.php Aux. Auxiliary script
Accessible without login Plain text file .scrutinizer.yml Data Auxiliary data
Accessible without login Plain text file CHANGELOG.md Data Auxiliary data
Accessible without login Plain text file CODE_OF_CONDUCT.md Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file composer.lock Data Auxiliary data
Accessible without login Plain text file LICENSE.md Lic. License text
Accessible without login Plain text file mkdocs.yml Data Auxiliary data
Accessible without login Plain text file phpstan.neon Data Auxiliary data
Accessible without login Plain text file phpunit.xml Data Auxiliary data
Accessible without login Plain text file README.md Doc. Read me
Accessible without login Plain text file renovate.json Data Auxiliary data
Accessible without login Plain text file SECURITY.md Data Auxiliary data

  Files folder image Files (34)  /  .github  
File Role Description
Files folder imageworkflows (4 files)
  Accessible without login Plain text file dependabot.yml Data Auxiliary data
  Accessible without login Plain text file FUNDING.yml Data Auxiliary data

  Files folder image Files (34)  /  .github  /  workflows  
File Role Description
  Accessible without login Plain text file main.yml Data Auxiliary data
  Accessible without login Plain text file phpmd.yml Data Auxiliary data
  Accessible without login Plain text file psalm.yml Data Auxiliary data
  Accessible without login Plain text file tests.yml Data Auxiliary data

  Files folder image Files (34)  /  docs  
File Role Description
  Accessible without login Plain text file basic-usage.md Data Auxiliary data
  Accessible without login Plain text file changelog.md Data Auxiliary data
  Accessible without login Plain text file code-of-conduct.md Data Auxiliary data
  Accessible without login Plain text file index.md Doc. Documentation
  Accessible without login Plain text file installation.md Data Auxiliary data
  Accessible without login Plain text file license.md Lic. License text
  Accessible without login Plain text file platform.md Data Auxiliary data
  Accessible without login Plain text file project.md Data Auxiliary data
  Accessible without login Plain text file repository.md Data Auxiliary data
  Accessible without login Plain text file security.md Data Auxiliary data
  Accessible without login Plain text file subscription.md Data Auxiliary data
  Accessible without login Plain text file user.md Data Auxiliary data

  Files folder image Files (34)  /  src  
File Role Description
Files folder imageException (1 file)
  Plain text file LibrariesIO.php Class Class source

  Files folder image Files (34)  /  src  /  Exception  
File Role Description
  Plain text file RateLimitExceededException.php Class Class source

  Files folder image Files (34)  /  tests  
File Role Description
Files folder imagesrc (1 file)

  Files folder image Files (34)  /  tests  /  src  
File Role Description
  Plain text file LibrariesIOTest.php Class Class source

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:34
This week:0
All time:11,026
This week:59Up