2017 © Pedro Peláez
 

library jskos-http

JSKOS API implementation (server and client)

image

gbv/jskos-http

JSKOS API implementation (server and client)

  • Wednesday, October 18, 2017
  • by gbv
  • Repository
  • 1 Watchers
  • 0 Stars
  • 81 Installations
  • PHP
  • 3 Dependents
  • 1 Suggesters
  • 0 Forks
  • 2 Open issues
  • 7 Versions
  • 13 % Grown

The README.md

jskos-http - JSKOS API implementation

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads, (*1)

Requirements

Requires PHP 7.0 or PHP 7.1, package jskos, and any package listed as php-http/client-implementation., (*2)

Bugs and feature request are tracked on GitHub., (*3)

Installation

With composer

Install a php-http/client-implementation and the latest version of this package, e.g.:, (*4)

composer require php-http/curl-client gbv/jskos-http

This will automatically create composer.json for your project (unless it already exists) and add jskos-http as dependency. Composer also generates vendor/autoload.php to get autoloading of all dependencies:, (*5)

Usage and examples

See directory examples for example scripts and jskos-php-examples for an example application., (*6)

Client

See class Client to query JSKOS API and get back Result objects., (*7)

use JSKOS\Client;

$client = new Client('http://example.org/');
$result = $client->query(['uri'=>$uri]);

if (count($result)) {
  ...
}

An optional Http\Client\HttpClient can be passed as second argument. Use this for instance to log all HTTP requests:, (*8)

$handler = \GuzzleHttp\HandlerStack::create();
foreach(['{method} {uri}', '{code} - {res_body}'] as $format) {
    $handler->unshift(
        \GuzzleHttp\Middleware::log(
            $logger, // e.g. Monolog\Logger
            new \GuzzleHttp\MessageFormatter($format)
        )
    );
}

$httpClient = \Http\Adapter\Guzzle6\Client::createWithConfig([
    'handler' => $handler,
]);

$jskoClient = new Client('http://example.org/', $httpClient);

Server

Class Server wraps a JSKOS Service with PSR-7 HTTP message interfaces so it can be used with your favorite PSR-7 framework. An example with Slim:, (*9)

$server = new JSKOS\Server($service);

$app = new Slim\App();

$app->get('/api', function ($request) use ($server) {
    return $server->query($request);
});

$app->run();

But there is no need to use an additional framework to support simple HTTP GET requests:, (*10)

use JSKOS;

$server = new Server($service);
$response = $server->queryService($_GET, $_SERVER['PATH_INFO'] ?? '');
Server::sendResponse($response);

Author and License

Jakob Voß jakob.voss@gbv.de, (*11)

JSKOS-HTTP is licensed under the LGPL license - see LICENSE.md for details., (*12)

See also

JSKOS is created as part of project coli-conc: https://coli-conc.gbv.de/., (*13)

The current specification of JSKOS is available at http://gbv.github.io/jskos/., (*14)

The Versions

18/08 2017