kicken/copyleaks-api

Copyleaks API

v2.2.0 2024-08-26 15:10 UTC

This package is auto-updated.

Last update: 2024-10-26 15:42:19 UTC


README

This is a simple Copyleaks API version 3 implementation.

Install

The easiest way to install this is to use composer.

composer require kicken/copyleaks-api

Usage

First create a new instance of the CopyleaksAPI class. Then you can use the scans() and downloads() methods to access the api endpoints.

Here are quick examples to help you get going. Read the library source for more details about features and how to use the library.

Submit a document for scanning using a URL.

const API_EMAIL = 'test@example.com';
const API_KEY = 'secret_api_key';

$client = new CopyleaksAPI(API_EMAIL, API_KEY);

//Setup callback URLs
$scanId = mt_rand();
$documentUrl = 'https://example.com/webhook.php?scan=' . $scanId . '&action=download';
$statusUrl = 'https://example.com/webhook.php?scan=' . $scanId . '&action=status&status={STATUS}';

//Submit scan request
$parameters = new SubmitUrlParameters($documentUrl, $scanId, $statusUrl);
$client->scans()->submitURL($parameters);

Export results when complete

const API_EMAIL = 'test@example.com';
const API_KEY = 'secret_api_key';

$json = json_decode(file_get_contents('php://input'));
$data = Completed::createFromJsonObject($json);

$matchMap = [
    'internet' => $data->results->internet,
    'database' => $data->results->database
];

$exportId = date('Ymd\tHis');
$completeHook = 'https://example.com/webhook.php?' . http_build_query([
        'scan' => $scanId,
        'action' => 'export',
        'what' => 'complete'
    ]);
$exportParameters = new ExportParameters($scanId, $exportId, $completeHook);
foreach ($matchMap as $type => $matchList){
    /** @var ResultItem $resultItem */
    foreach ($matchList as $resultItem){
        $resultParams = new ResultParameters($resultItem->id, 'https://example.com/webhook.php?' . http_build_query([
                'scan' => $scanId,
                'action' => 'export',
                'what' => 'result',
                'id' => $resultItem->id
            ])); 
        $exportParameters->addResult($resultParams);
    }
}

$client = new CopyleaksAPI(API_EMAIL, API_KEY);
$client->downloads()->export($exportParameters);

Login token caching

Copyleaks recommends caching and re-using the provided authorization token as it is valid for 48-hours. This library by default will cache the token in memory. To cache the token elsewhere (such as to persistent storage) you can provide a custom implementation of the AuthorizationCache interface.

Known issues

Not all endpoints and model properties are implemented yet.