Skip to content

scriptotek/php-ncip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Basic NCIP php library and Laravel package

Build Status Coverage Status Latest Stable Version Total Downloads License

php-ncip is a php package for parsing and formatting NCIP request and response messages. Development has been guided by a desire for a simple API rather than a complete one. Only a small subset of the NCIP specification is currently covered, but suggestions for additions are welcome.

Installation:

Composer

Add the package to the require list of your composer.json file.

{
    "require": {
        "danmichaelo/ncip": "dev-master"
    },
}

and run composer install to get the latest version of the package.

Additional steps for Laravel 4

The package comes with a Laravel 4 service provider that you can install if you like. It comes with a config file, so you can set settings there instead of passing them to the constructor.

To register the service provider, add 'Scriptotek\NcipServiceProvider', to the list of providers in app/config/app.php. Then run php artisan config:publish danmichaelo/ncip in your terminal to create the config file app/config/packages/danmichael/ncip/config.php.

Usage:

Construction

To construct a client, you need to specify the url to the NCIP srvice, a freely choosen user agent string for your client, and the agency id. The agency id identifies your institution, as specified in the NCIP protocol.

require_once('vendor/autoload.php');
use Scriptotek\Ncip\NcipConnector,
    Scriptotek\Ncip\NcipClient;

$ncipUrl = 'http://eksempel.com/NCIPResponder';
$userAgent = 'My NCIP client/0.1';
$agencyId = 'a';

$conn = new NcipConnector($ncipUrl, $userAgent, $agencyId);
$client = new NcipClient($conn);

To construct a server:

require_once('vendor/autoload.php');
use Scriptotek\Ncip\NcipServer;

$server = new NcipServer;

If you have registered the Laravel 4 service provider, the classes can be constructed through the applications container instead:

$client = App::make('ncip.client');
$server = App::make('ncip.server');

// Or if you have access to an instance of the application.
$client = $app['ncip.client'];
$server = $app['ncip.server'];

The settings are now pulled from app/config/packages/danmichael/ncip/config.php instead, and the NcipConnector is injected into the NcipClient automatically.

Client example:

$user = $client->lookupUser('abc123');
if ($user->exists) {
	echo 'Hello ' . $user->firstName . ' ' . $user->lastName;
} else {
	echo 'User not found';
}

Server example:

$postData = file_get_contents('php://input');
$request = $server->parseRequest($postData);

if ($request->is('LookupUser')) {

	$response = new UserResponse;
	$response->userId = $request->userId;
	$response->firstName = 'Meriadoc';
	$response->lastName = 'Brandybuck';
	echo $response->xml();

}

Events:

The client emits events on each request to the server. This can be useful to implement logging. The events are request.item, request.user, request.checkout, request.checkin and request.renew.

$client->on('request.checkout', function($userId, $itemId) {
	$log->addInfo('Requested checkout of item "' . $itemId . '" for user "' . $userId . '"');
}

For debugging, events message.send and message.recv are emitted on each message sent to and received from the server. The message xml body is given as the first argument.

$client->on('message.send', function($msg) {
	printf("[SEND] %s\n", $msg);
}
$client->on('message.recv', function($msg) {
	printf("[RECV] %s\n", $msg);
}

About

Basic NCIP library [NO LONGER MAINTAINED]

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages