PHP Classes

File: docs/repository.md

Recommend this page to a friend!
  Classes of Eric Sizemore   PHP Libraries.IO   docs/repository.md   Download  
File: docs/repository.md
Role: Auxiliary data
Content type: text/markdown
Description: Auxiliary data
Class: PHP Libraries.IO
Query library packages using the Libraries.io API
Author: By
Last change: Update of docs/repository.md
Date: 4 months ago
Size: 4,420 bytes
 

Contents

Class file image Download

Repository

Esi\LibrariesIO\LibrariesIO::repository()

/
 * Performs a request to the 'repository' endpoint and a subset endpoint, which can be:
 * dependencies, projects, or repository
 *
 * @param string $endpoint
 * @param array<string, int|string> $options
 * @return ResponseInterface
 * @throws InvalidArgumentException|ClientException|GuzzleException
 */
public function repository(string $endpoint, array $options): ResponseInterface;

The $endpoint paramater accepts:

dependencies, projects, or repository

The $options parameter accepts an array of key =&gt; value pairs with keys matching the 'options' array for the particular subset endpoint below:

        static $repositoryParameters = [
            'dependencies' => ['format' => 'github/:owner/:name/dependencies', 'options' => ['owner', 'name']],
            'projects'     => ['format' => 'github/:owner/:name/projects'    , 'options' => ['owner', 'name']],
            'repository'   => ['format' => 'github/:owner/:name'             , 'options' => ['owner', 'name']]
        ];

Endpoints

Repository

Get info for a repository. Currently only works for open source repositories.

GET https://libraries.io/api/github/:owner/:name?api_key={yourApiKey}

More information here.

Dependencies

Get a list of dependencies for a repositories. Currently only works for open source repositories.

GET https://libraries.io/api/github/:owner/:name/dependencies?api_key={yourApiKey}

More information here.

Projects

Get a list of packages referencing the given repository.

GET https://libraries.io/api/github/:owner/:name/projects?api_key={yourApiKey}

More information here.

Example

An example using the repository() method with the 'repository' $endpoint parameter.

use Esi\LibrariesIO\LibrariesIO;

// Obviously you would want to pass your API key to the constructor, along with
// a folder/path to be used for caching requests if desired.
$api = new LibrariesIO('...yourapikey...', '...yourcachepath...');

// We call the 'repository' method with the '$endpoint' parameter set to 'repository'
// The 'repository' endpoint requires options of: owner, name
$response = $api->repository('project', ['owner' => 'gruntjs', 'name' => 'grunt']);

// From here you have a few options depending on how you need or want the data.

// For just the raw json date, we can use raw()
$json = $api->raw($response);

// To have the json decoded and handed back to you as an array, use toArray()
$json = $api->toArray($response);

// Or, to have it returned to you as an object (an \stdClass object), use toObject()
$json = $api->toObject($response);

// It is important to note that raw(), toArray(), and toObject() must have the $response as an argument.
// $response will be an instance of '\Psr\Http\Message\ResponseInterface'

// It is not recommended to attempt calling either of the to* functions back to back

The call to repository() using the 'repository' endpoint and then using raw() will return something like:

{
  "full_name": "gruntjs/grunt",
  "description": "Grunt: The JavaScript Task Runner",
  "fork": false,
  "created_at": "2011-09-21T15:16:20.000Z",
  "updated_at": "2023-07-25T02:54:47.000Z",
  "pushed_at": "2023-05-28T00:17:05.000Z",
  "homepage": "http://gruntjs.com/",
  "size": 2808,
  "stargazers_count": 12191,
  "language": "JavaScript",
  "has_issues": true,
  "has_wiki": true,
  "has_pages": false,
  "forks_count": 1536,
  "mirror_url": null,
  "open_issues_count": 160,
  "default_branch": "main",
  "subscribers_count": 489,
  "uuid": "2430537",
  "source_name": null,
  "license": "Other",
  "private": false,
  "contributions_count": 84,
  "has_readme": "README.md",
  "has_changelog": "CHANGELOG",
  "has_contributing": "CONTRIBUTING.md",
  "has_license": "LICENSE",
  "has_coc": "CODE_OF_CONDUCT.md",
  "has_threat_model": null,
  "has_audit": null,
  "status": null,
  "last_synced_at": "2023-01-31T15:57:17.204Z",
  "rank": 25,
  "host_type": "GitHub",
  "host_domain": null,
  "name": null,
  "scm": "git",
  "fork_policy": null,
  "pull_requests_enabled": null,
  "logo_url": null,
  "keywords": [
    "hacktoberfest"
  ],
  "github_contributions_count": 84,
  "github_id": "2430537"
}