Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - CoverGenius/xcover-php: XCover PHP SDK · GitHub
Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CoverGenius/xcover-php: XCover PHP SDK · GitHub
Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CoverGenius/xcover-php: XCover PHP SDK · GitHub
Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - CoverGenius/xcover-php: XCover PHP SDK · GitHub
Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CoverGenius/xcover-php: XCover PHP SDK · GitHub
Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CoverGenius/xcover-php: XCover PHP SDK · GitHub
Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - CoverGenius/xcover-php: XCover PHP SDK · GitHub
Skip to content

Repository files navigation

Latest Stable VersionPHP Version RequireLicense

XCover SDK for PHP

XCover SDK simplifies XCover API integration in PHP applications.
The library is based on Guzzle 7 HTTP client and offers the following features:

  • AuthMiddleware performs authentication
  • JsonResponseMiddleware provides convenient json method on the Guzzle responses
  • HTTP abstraction in XCover class
  • Automatic response status code validation and custom exception classes

Installation

XCover SDK is available on Packagist and the recommended way of installing it is via Composer.

V1 releases are for PHP 7.2 or higher (but less than 8)

V2 releases are for PHP 7.4 as well as 8.0 and higher

composer require covergenius/xcover-php

Usage

Basic usage

useXCoverClient\Config;
useXCoverClient\XCover;
// Instantiate client$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]));
// Quote request$quoteResponse = $client->createQuote(
[
'request' => [
[
'policy_type' => 'event_ticket_protection', 'policy_type_version' => 1, 'policy_start_date' => '2019-12-01T17:59:00.831+00:00', 'event_datetime' => '2019-12-25T21:00:00+00:00', 'event_name' => 'Ariana Grande', 'event_location' => 'The O2', 'number_of_tickets' => 2, 'total_ticket_price' => 100, 'resale_ticket' => false, 'event_country' => 'GB' ] ], 'currency' => 'GBP',
'customer_country' => 'GB',
'customer_region' => 'London',
'customer_language' => 'en' ]
);
$quotePackage = $quoteResponse->json();
// Quote package array will contain all information required to display the insurance offeringecho$quotePackage['id']; // 'JWFFM-M3W3Y-INS'echo$quotePackage['total_price']; // 5.00echo$quotePackage['quotes'][0]['price']; // 5.00echo$quotePackage['quotes'][0]['tax']['total_tax']; // 1.00echo$quotePackage['quotes'][0]['tax']['total_tax_formatted']; // '£ 1.00'echo$quotePackage['quotes'][0]['content']['title']; // 'Ticket Protection'echo$quotePackage['quotes'][0]['content']['description']; // 'Covers the purchase cost of tickets (up to a maximum of £500) if you are unable to attend a booked event as result of an unexpected circumstance.'echo$quotePackage['quotes'][0]['pds_url']; // 'https://xcover.com/en/pds/JWFFM-M3W3Y-INS?policy_type=event_ticket_protection_v1'// To report insurance bookingecho$quotePackage['quotes'][0]['id']; // '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd'$bookingResponse = $client->createBooking($quotePackage['id'],
[
'quotes' => [
[
'id' => '40e9859d-9a2c-47fb-a0a1-5d121fc68fdd',
]
],
'policyholder' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@gmail.com',
'age' => 30,
'country' => 'GB'
]
]
);
// Booking has the same id as quote package and a similar structure$booking = $bookingResponse->json();
echo$booking['id']; // 'JWFFM-M3W3Y-INS'echo$booking['status']; // 'CONFIRMED'echo$booking['total_price']; // 5.00

Please refer to tests/XCoverTest.php file for more examples.

XCover class provides methods for all operations listed in XCover API Documentation.

Customising Guzzle client

To customise Guzzle configuration you can pass custom client instance in XCover constructor.

Guzzle 6 client instance is immutable so you need to prepare it beforehand and add all mandatory config options, e.g:

useGuzzleHttp\Client;
useGuzzleHttp\HandlerStack;
useXCoverClient\Config;
useXCoverClient\Middleware\AuthMiddleware;
useXCoverClient\Middleware\JsonResponseMiddleware;
useXCoverClient\XCover;
// Add XCover mandatory middlewares$handlerStack = HandlerStack::create();
$handlerStack->push(
newAuthMiddleware([
'apiKey' => $this->config->apiKey(),
'apiSecret' => $this->config->apiSecret(),
]),
'auth'
);
$handlerStack->push(newJsonResponseMiddleware, 'json_response');
// You can add your custom middlewares here // You can add your custom options to the Guzzle's Client constructor below$client = newClient([
'handler' => $handlerStack,
'headers' => [
'Content-Type' => 'application/json',
'X-Api-Key' => $this->config->apiKey(),
],
]);
// Now pass it to XCover constructor as second argument$client = newXCover(newConfig([
'baseUrl' => env('BASE_URL'),
'apiPrefix' => env('API_PREFIX'),
'apiKey' => env('API_KEY'),
'apiSecret' => env('API_SECRET'),
'partner' => env('PARTNER_CODE'),
]), $client);

It is also possible to extend XCover Class and override createDefaultClient function.

TODO

There are a few features which we will add in the future releases:

  • Async calls using Guzzle's promises
  • CircuitBreaker middleware
  • BYO HTTP Client

Testing

PHPUnit with PHP-VCR are used to run tests.

Tests are run on every push and pull request to the repository.

Run the below command to run tests

composer test

Code Style

PHP_CodeSniffer is used for coding standard. We currently follow PSR-1 and PSR-2 as a standard.

Lint checks are run on every push and pull request.

Run the below command to check for any code style issues.

composer lint

You can view the php-cs rules at phpcs.xml

Static Analysis

PHPStan is used for static analysis of code. PHPStan is a PHP Static Analysis Tool. PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.

Static Analysis is run on every push and pull request

run the command below to check the code with PHPStan

composer analyse

Changelog

You can view the changelog at CHANGELOG.md

Security

You can iew the security policy at SECURITY.md

Licence

You can view license information at LICENSE

About

XCover PHP SDK

Resources

Security policy

Stars

7 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages